我希望通过反射获得其原类。可是提示我找不到类型。但是这个类型明明已经在前面已经用了。并且可以实例化,但就是在反射的时候找不到。我找了相关的网上资料,说可能是ClassPath没设置好,请问各位怎么做?本人是做C#开发的,第一次做java开发,如果问的问题比较白,不要笑话我啊。
System.out.println("to get the class type is "+type.toString());//此处打印的结果是正确的。
Class cla = Class.forName(type.toString());//在这行报错,ClassNotFoundException
//解析属性信息
Field[] f=cla.getDeclaredFields();
System.out.println("to get the class type is "+type.toString());//此处打印的结果是正确的。
Class cla = Class.forName(type.toString());//在这行报错,ClassNotFoundException
//解析属性信息
Field[] f=cla.getDeclaredFields();
public static Class<?> forName(String className)
throws ClassNotFoundException返回与带有给定字符串名的类或接口相关联的 Class 对象。调用此方法等效于:
Class.forName(className, true, currentLoader)
其中 currentLoader 表示当前类的定义类加载器。
例如,以下代码片段返回命名为 java.lang.Thread 的类的运行时 Class 描述符。 Class t = Class.forName("java.lang.Thread")
调用 forName("X") 将导致命名为 X 的类被初始化。
参数:
className - 所需类的完全限定名。
返回:
具有指定名的类的 Class 对象。
抛出:
LinkageError - 如果链接失败
ExceptionInInitializerError - 如果此方法所激发的初始化失败
ClassNotFoundException - 如果无法定位该类
String.class.getName() // 结果为 java.lang.String
String.class.getSimpleName() // 结果为 String