2017-05-26 98 views
1

我試圖用思考類的建議在這裏 stackoverflow.com/questions/12538761/Java - 如何導入「反射」類?

Reflections reflections = new Reflections("my.project.prefix"); 
Set<Class<? extends SomeType>> subTypes = 
     reflections.getSubTypesOf(SomeType.class); 
Set<SomeType> someTypes = new HashSet<SomeType>(subTypes.size()); 
for (Class<? extends SubType> subType : subTypes) { 
    someTypes.add(subType.newInstance()); 
} 

不過,我似乎無法導入必要的包。 NetBeans無法找到它,而且我試圖導入java.lang.reflections,但它沒有這樣做。 我可以看到java.lang.Class,但我沒有在任何地方看到Reflections類。

+1

「我嘗試導入java.lang.reflections,但它沒有這樣做。」這可能只是因爲沒有像java.lang.reflections這樣的包。 –

+0

對,它是'java.lang.reflect'。謝謝 – tamir

+1

Javadoc清楚地顯示,它不包含您要導入的類型。 http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-frame.html –

回答

2

Reflections不是Java的一部分,它是一個第三方庫。首先,您需要將相關的Jar添加到您的類路徑中。例如,如果你使用Maven,你可以添加以下的依賴:

<dependency> 
    <groupId>org.reflections</groupId> 
    <artifactId>reflections</artifactId> 
    <version>0.9.11</version> 
</dependency> 

一旦你做到了這一點,你需要導入Reflections類,正如你指出。它位於org.reflections包中:

import org.reflections.Reflections