給定一個java語言包,我想知道它包含了多少個類和它們的列表(這些類的列表)。我如何知道給定包的類
我可以訪問我的包myClass1.class.getPackage()
但畢竟這我不有像getClasses()
或size()
或lenght
或ClassesCount()
一些事情。
謝謝
給定一個java語言包,我想知道它包含了多少個類和它們的列表(這些類的列表)。我如何知道給定包的類
我可以訪問我的包myClass1.class.getPackage()
但畢竟這我不有像getClasses()
或size()
或lenght
或ClassesCount()
一些事情。
謝謝
看看的reflections庫可能允許輕鬆實現:
Reflections reflections = new Reflections("my.project.prefix");
Set<Class<? extends SomeType>> subTypes =
reflections.getSubTypesOf(SomeType.class);
我想你可以代替SomeType
使用Object
的對象是超類中的所有類的在Java中:
Set<Class<? extends Object>> allClasses =
reflections.getSubTypesOf(Object.class);
在Java中,類是動態加載的。所以沒有辦法做你想做的事情;虛擬機本身並不知道包內類的完整列表。
類加載器,但是當我編程,我寫了'myPackage.'後寫點(。)我有所有類的列表,但不是當我寫'myClass.class,getPackage()' – RiadSaadi
正確。你的開發環境知道所有的類是什麼;它必須,因爲它需要編譯它們。但是除非你明確地表明,否則這些信息並不適用於程序本身。 –
已經有上這麼多的問題和答案, 可以按照以下鏈接
一)How to get all classes names in a package?
B)How can I list all classes loaded in a specific class loader
對不起,我看到第一個和第二個不完全像我的,但最後一個是。該怎麼辦?我應該刪除這個問題嗎? – RiadSaadi
@RiadSaadi我認爲你不應該刪除在這篇文章中已經有很多有用的專家評論。 –
@SantoshJoshi如你所知,這是其他問題的重複,所以你不應該作爲回答發佈。 – 2013-11-23 16:37:34
你必須寫自己爲 – svz