2016-12-02 34 views
2

我想能够在我的项目中存储每个类的数组。有没有简单的方法来做到这一点?如何获取项目中现有类的列表?

Class<?>[] classes = SomeClass.getClasses(); 

谢谢。编辑: 这是主类的代码。

package game_engine.main; 

public abstract class Main { 
    public static void main(String[]args){ 
     //do something 
    } 
    protected abstract void start(GameSettings settings); 
} 
+1

定义“每级” –

+0

可不可以给一些见解,为什么你要这么做? [XY问题](http://xyproblem.info/) – 4castle

+0

可能的重复[可以使用反射找到包中的所有类?](http://stackoverflow.com/q/520328/5221149) – Andreas

回答

0

有没有简单的方法来做到这一点,没有。这样做涉及到扫描类路径,这是不可行的。 Google的Guava有ClassPath,但它明确表示不会将它用于生产关键任务。

0

我不能在单行代码中完成它。但是,这也可能会有所帮助:

//scan urls that contain 'my.package', include inputs starting with 'my.package', use the default scanners 
Reflections reflections = new Reflections("my.package"); 

//or using ConfigurationBuilder 
new Reflections(new ConfigurationBuilder() 
.setUrls(ClasspathHelper.forPackage("my.project.prefix")) 
.setScanners(new SubTypesScanner(), 
       new TypeAnnotationsScanner().filterResultsBy(optionalFilter), ...), 
.filterInputsBy(new FilterBuilder().includePackage("my.project.prefix")) 
...); 

详细信息:https://github.com/ronmamo/reflections

+0

我试过之前使用了反射,但它没有从git中克隆,这些类不能被导入,并且它无法导入它。如何将github存储库添加到项目中? –

+0

你没有使用maven或gradle? –

+0

不可以。你可以参考一个很好的教程吗? –

相关问题