Tôi nghĩ rằng tôi cần một số trợ giúp trong việc tìm kiếm một lớp liệt kê trong lớp khác bằng cách sử dụng sự phản chiếu trong Java. Tôi đã chiến đấu với điều này quá lâu rồi. Tôi đã đọc điều này cũng như một số bài viết khác và tất cả đều khiến tôi tin rằng nó sẽ hoạt động như sau.Tìm một lớp liệt kê bằng cách sử dụng Reflection trong 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);
}
}
}
Tuy nhiên, những gì thực sự xảy ra là modelClass được tìm thấy một cách chính xác, nhưng attributeEnumerationClass không phải là, đó là, tôi nhận được ClassNotFoundException thứ hai như sau:
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)
thể bất cứ ai xin vui lòng chỉ gì- - rõ ràng là - sai lầm với tôi. Cảm ơn bạn.
Thử tải lớp ' ModelActivity $ AttributeEnumeration'. –