Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.Class
и java.lang.reflect
java.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 включают: