Взгляните на следующий пример, первый вызов getMethod ()
вызывает предупреждение в Eclipse. Второй не работает и выдает ошибку NoSuchMethodException
.
Аргумент типа
null
должен быть явно приведен кClass > []
для вызова метода varargsgetMethod (String, Class >. ..)
из типаClass
. В качестве альтернативы его можно преобразовать в Class для вызова varargs.
Я последовал предупреждению, и ничего больше не работало.
import java.lang.reflect.Method;
public class Example
{
public void exampleMethod() { }
public static void main(String[] args) throws Throwable
{
Method defaultNull = Example.class.getMethod("exampleMethod", null);
Method castedNull = Example.class.getMethod("exampleMethod", (Class<?>) null);
}
}
Второй вызов вызывает следующую ошибку:
Exception in thread "main" java.lang.NoSuchMethodException:
Example.exampleMethod(null)
at java.lang.Class.getMethod(Class.java:1605)
at Example.main(Example.java:12)
Может ли кто-нибудь объяснить мне такое поведение? Как правильно избежать предупреждения?