0

我不知道,我怎样才能读取文件。我想阅读 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());
}
4

2 回答 2

1

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

private static String clazz = "annotations.FK";

然后

Class.forName(clazz);

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

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

于 2012-06-15T18:26:16.753 回答
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");
  }
}
于 2012-06-15T18:41:00.450 回答