如何读取注释文件?

时间:2012-06-15 18:22:43

标签: java file class annotations

我不知道,我怎么能读取文件。我想阅读FK.java文件,但给我一个未找到的类异常。 FK是注释java文件。 (我尝试过“src / annotations / FK.java”,但没有用。

private static String clazz = "src/annotations/FK";

public static List<Object> GetAnnotations() throws ClassNotFoundException{

    Class<?> c;
    c = Class.forName(clazz);

    List<Object> result = new ArrayList();


    Field[] fields = c.getDeclaredFields();
    for (int j = 0; j < fields.length; j++)
    {
        Annotation[] annot = fields[j].getAnnotations();
        for (int k = 0; k < annot.length; k++)
        {
            result.add(annot[k].annotationType());
        }
    }
    return result;
}

public static void main(String[] args) throws ClassNotFoundException {
    System.out.println(GetAnnotations());
}

2 个答案:

答案 0 :(得分:1)

该类的名称应包含点(.)而不是斜杠('/')

private static String clazz = "annotations.FK";

然后

Class.forName(clazz);

将尝试从提供的类路径中加载 annotations/FK.class。如果您只有.java文件,则需要先编译它。

编辑:基于评论的固定路径

答案 1 :(得分:0)

您的问题是,您正在尝试使用错误的语法为带注释的类获取Class对象。

Class.forName(String) - 方法将完全限定的Java类名称作为参数。这是包含在Java文件中声明的类的包的名称,后面紧跟着您的类名。在您的情况下,可能是"annotations.FK"

另一个注意事项是,仅仅拥有该类的Java源代码文件是行不通的。您需要在类路径中包含已编译的类。

这是一个简单的例子:

// mytoplevelpackage/mypackage/MyClass.java

package mytoplevelpackage.mypackage;

public class MyClass {}


// mytoplevelpackage/OtherClass.java

package mytoplevelpackage;

public class OtherClass {
  public static void main(String[] args) throws ClassNotFoundException {
    Class c = Class.forName("mytoplevelpackage.mypackage.MyClass");
  }
}