|
Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.Class и java.lang.reflectjava.lang.Class был generified: getInterfaces(), getClasses(). getConstructors().
getMethod(String, Class...),
getConstructor(Class...), getDeclaredClasses(), getDeclaredConstructors(),
getDeclaredMethod(String, Class...), и
getDeclaredConstructor(Class...). В результате код, который использует эти методы теперь, производит предупреждения во время компиляции.getDeclaredMethod():
import java.lang.reflect.Method;
public class Warning {
void m() {
try {
Warning warn = new Warning();
Class c = warn.getClass();
Method m = c.getDeclaredMethod("m");
} catch (NoSuchMethodException x) {
x.printStackTrace();
}
}
}
$ javac Warning.java
Note: Warning.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
$ javac -Xlint:unchecked Warning.java
Warning.java:8: warning: [unchecked] unchecked call to getDeclaredMethod(java.lang.String,java.lang.Class<?>...) as a member of the raw type java.lang.Class
Method m = c.getDeclaredMethod("m");
^
1 warning
Удалить предупреждение, объявление c должен быть изменен, чтобы включать соответствующий универсальный тип. В этом случае declation должен быть:
Class<?> c = warn.getClass();
Method.toString() и Constructor.toString() теперь правильно выведите на экран набор модификаторов.Array.newInstance(Class, int...) имеет переменную арность.Изменения в java.lang. Класс и java.lang.reflect включают: