我希望通过反射获得其原类。可是提示我找不到类型。但是这个类型明明已经在前面已经用了。并且可以实例化,但就是在反射的时候找不到。我找了相关的网上资料,说可能是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();

解决方案 »

  1.   

    forName
    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 - 如果无法定位该类
      

  2.   

    type.toString() 改成 type.getName()比如说String.class.toString() // 结果为  class java.lang.String
    String.class.getName() // 结果为 java.lang.String
    String.class.getSimpleName() // 结果为 String