为什么要使方法变得不稳定?使方法变得易变如何改变方法的行为?
编辑:我对由类对象(Java反射)返回的Method对象执行了toString()。返回字符串具有针对方法名称的volatile修饰符以及公共可见性和void返回类型。研究仅得出有关挥发物特性的信息。这就是为什么我问这个问题。
方法声明为:
public volatile org.osmdroid.api.IGeoPoint org.osmdroid.views.MapView.getMapCenter()
反射方法的代码:
public static class Test {
public static void showMethods(Object target) {
Class<?> clazz = target.getClass();
for (Method method : clazz.getMethods()) {
if (method!=null) {
System.out.println(method.toString());
}
}
}
}
方法调用:
Test.showMethods(mapView);
我强烈怀疑您看到的是JLS为字段定义了以下位这一事实的副作用:
public static final int VOLATILE = 0x00000040;
和下面的方法位:
static final int BRIDGE = 0x00000040;
请注意,它们具有相同的值(相同的位对方法和字段具有不同的含义)。
如果您致电例如Modifier.toString(int)
不致电,如文档所示:
请注意,要对已知种类的实体(例如构造函数或方法)执行此类检查,请首先将的自变量
toString
与参数相匹配,并使用来自类似constructorModifiers
或方法的掩码methodModifiers
。
那么您将得到不适当的输出(包括桥接方法,它是为例如协变量返回类型自动生成的,显示为“ volatile”)。
至少当前的OpenJDK Method.toString()
对此进行了过滤。如果不是,则可能是您在使用其他版本或较旧版本的JDK,但无法正确执行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句