getDeclaredFields [0] .getType()仅返回编译时类信息。我有以下代码,其中java.lang.reflect.Field
的类型与实际类型有关。此字段将传递给 Unsafe.objectFieldOffset(f)
public class Wrapper {
public Object field1;
//getters and setters for field1 and constructor
}
class SomeClass {
}
Wrapper wrapper = new Wrapper();
wrapper.field1 = new SomeClass();
System.out.println(wrapper.getClass().getDeclaredFields[0].getType());
尽管objectper.field1.getClass()提供了对象,但Unsafe.objectFieldOffset(f)
需要Field实例,因此wrapper.getClass().getDeclaredFields[0].getType()
需要返回SomeClass而不是Object的实际类型。无论如何我可以覆盖这种行为吗?
要重新说明,是否仍然使用 Unsafe.objectFieldOffset(f)
和运行时类型信息?