具有实际运行时类型的getDeclaredFields,用于Unsafe.objectFieldOffset(f)

时间:2015-11-23 11:14:13

标签: java class serialization reflection

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) 和运行时类型信息?

0 个答案:

没有答案