У меня есть метод, имеющий общий тип T
в качестве аргументаКак я могу вызвать соответствующий метод с аргументом generic type?
private static <T> void doValidation(T[] pArray, int size, String firstName, String secondName) {
...
for (int i = 0; i < size; i++) {
...
validate(pArray[i]);
}
}
И тогда я другой метод дал конкретный тип, например, A
, B
и т.д ..
private static void validate(A a) {
}
private static void validate(B b) {
}
Я хотел бы он разрешает тип во время выполнения и вызывает соответствующий метод, основанный на типе, возможно ли это?
На данный момент я получаю
no suitable method found for validate(T)
method ValidateDataStructure.validate(A) is not applicable
(argument mismatch; T cannot be converted to A)
method ValidateDataStructure.validate(B) is not applicable
(argument mismatch; T cannot be converted to B)
where T is a type-variable:
T extends Object declared in method <T>doValidation(T[],int,String,String)
----
(Alt-Enter shows hints)
Он хочет меня бросить, конечно, аргумент ..
Я пытаюсь сделать порт Assimp, мое намерение состоит в том, чтобы быть как можно больше близко к структуре C. This - это функция, которую я пытаюсь установить прямо сейчас.
Его невозможно. Generics - это время компиляции. –
Вау, это было быстро :), так какой вариант вы бы предложили? – elect
Вы не можете использовать полиморфизм для статических методов в Java. Вы можете использовать методы экземпляра и передавать экземпляры, которые предоставляют метод 'validate'. – khelwood