0
我对Java编程比较陌生。我需要使用反射来获取字段值。我当前的代码如下所示(其中超是一组扩展MySuperClass
类):获取字段值而无需使用超类的导入?
for (Class<? extends MySuperClass> s : subclasses) {
try {
field = s.getDeclaredField("MY_FIELD");
fieldValue = (String) field.get(null);
} catch ...
我的问题是,每当我打电话field.get,我得到一个错误,因为该类org.slf4j.LoggerFactory
没有被发现。这是从哪里来的?那么,MySuperClass
进口它。我不知道为什么Java认为有必要拥有它,因为我想从中获取MY_FIELD
值的类不会导入它。当然,他们延伸MySuperClass
(如果有关系,这是抽象的)。那么有什么办法可以从只有从特定的类获取字段值,而不依赖于超类使用的类?我不需要实例化一个类或其他东西,只需要得到那个值...
我希望我能够解释我的问题在哪里,并且为我的小Java知识而道歉。
非常感谢提前。
'import'语句不会做你认为它的作用。它实际上并不包含任何东西。如果你得到一个'ClassNotFoundException',那么你已经加载/初始化的一些类需要它,而不是因为'import',而是因为它实际上使用了它。 – 2014-12-02 15:23:06
堆栈跟踪和可重现的示例在这里会有所帮助。 – 2014-12-02 15:27:32