62,610
社区成员
发帖
与我相关
我的任务
分享
public class FindVariant {
public static void main(String[] args) {
FindVariant fv = new FindVariant();
A a = new A(1);
Object obj = fv.findByName(A.class.getName());
if (obj instanceof A) {
A aa = (A) obj;
aa.show();
if (aa == a) { //这里是判断找到的是不是想找的,如果是,引用地址应该是一样的
System.out.println("find the same variant. ");
}
}
Object obj2 = fv.findByClassNameAndName(A.class.getName(), "index");
System.out.println("index type is ==" + ((Field)obj2).getType());
// if (obj instanceof A) {
// A aa = (A) obj;
// aa.show();
// if (aa == a) {
// System.out.println("find the same variant. ");
// }
// }
}
public Object findByName(String name) {
//LZ如果真的解决了,能把你的处理补写完这个函数吗?
Class cls = null;
Object obj = null;
try {
cls = Class.forName(name);
Constructor ct = cls.getConstructor(int.class);
obj = ct.newInstance(1);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return obj;
}
public Object findByClassNameAndName(String className, String name) {
//就算你只知道class名,你又是怎么得到实际的变量的?也请你补写完这个函数好吗?
Field field;
Class cls = null;
try {
cls = Class.forName(className);
field = cls.getDeclaredField(name);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return field;
}
}