今天在修改的Java驱动,猛然发现我的Foo类居然无法创建实例。
后来对比发现由于Foo是个内部类,因此无法直接反射创建其实例,代码原型如下:
1 public final class UnitTests 2 { 3 @Test 4 public void FooTest() throws IllegalAccessException, InstantiationException, NoSuchFieldException 5 { 6 Class c = Foo.class; 7 Foo obj = (Foo) c.newInstance(); 8 Field fi = c.getField("Name"); 9 10 fi.set(obj, "Foo:你的名字");11 12 System.out.println(obj.Name);13 }14 15 public final class Foo16 {17 public String Name;18 }19 }
到群里请教各位Java大神,无果。
但是我发现MongoDB驱动自带的一些示例是可以反射的,经过细致对比发现“需要在内部类上增加static修饰符”,即:public static final class Foo
请各位路过之人指点迷津!