Javaでのリフレクションを使用して、別のクラス内の列挙型クラスを見つけるための助けが必要だと思います。私はこれほど長い間、これと戦ってきました。私はこれだけでなく、いくつかの他の投稿を読んでおり、彼らはすべて私が以下のように動作すべきだと私に信じさせる。次のようにJavaでのリフレクションを使用した列挙型クラスの検索
public class ModelActivity {
public enum AttributeEnumeration { MODELID, MODELURGENCY, MODELDUEDATEANDTIME }
public static void main(String[] args) {
// Find the class with the given name
String className = "ModelActivity";
Class modelClass = null;
try {
// Retrieve the Class with the given className...
modelClass = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException("Class by name '" + className + "' not found.", e);
}
// Find the AttributeEnumeration within the class
String attributeEnumerationClassName = className + ".AttributeEnumeration";
Class attributeEnumerationClass = null;
try {
attributeEnumerationClass = Class.forName(attributeEnumerationClassName);
} catch (ClassNotFoundException e) {
throw new RuntimeException("Class by name '" + attributeEnumerationClassName + "' not found.", e);
}
}
}
は、しかし、実際に何が起こることはmodelClassが正しく検出されたということですが、attributeEnumerationClassではない、つまり、私は2番目のClassNotFoundExceptionが取得:
Exception in thread "main" java.lang.RuntimeException: Class by name 'ModelActivity.AttributeEnumeration' not found.
at ModelActivity.main(ModelActivity.java:27)
Caused by: java.lang.ClassNotFoundException: ModelActivity.AttributeEnumeration
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at ModelActivity.main(ModelActivity.java:25)
誰がザ・ポイントしてもらえおそらく明らかです - 私に間違っている。ありがとうございました。
は 'クラスをロードしてくださいModelActivity $ AttributeEnumeration'を呼び出します。 –