2009-10-31 111 views
4

我在另一個班級裏有一個匿名的內部班級(SomeClass)。Java反射:我如何檢索匿名內部類?

SomeClass.class.getClasses()SomeClass.class.getDeclaredClasses()都返回空數組。

我無法在Class'Javadocs上找到一些提示。

匿名內部類可以通過某種方式使用反射檢索嗎?

匿名內部類和普通內部類之間還有什麼值得注意的區別?

+0

相關:https://stackoverflow.com/q/44475201/314291 – StuartLC 2017-06-10 16:43:47

回答

0

如果使用反射,這可能是一個非常糟糕的主意。除此之外,我相信你可以在運行時增加額外的內部類,所以列出可能還沒有想到的類是沒有意義的。我猜,列出當前加載的類會需要通過Java代理或類似的東西。

匿名內部類已組成名稱,封閉方法和用於複製已複製的外部局部變量的其他合成域。一個類在運行時與另一個類非常相似。請記住,1.1引入了內部類,但自1.0以來,類文件幾乎沒有改變。

+0

雖然不是一個解決方案的答案,很好的論據。將標記爲正確。 – 2009-11-12 00:36:53

4

您可以嘗試對類$ 1 ... Class $ n進行蠻力搜索,直到找不到更多。

+0

給予思考的食物給定一個匿名內部類,你可以找到它的封閉方法,但getDeclaredInnerClasses()不是方法api的一部分。 – alphazero 2009-10-31 17:28:06

+0

我想我可以理解爲什麼沒有'getDeclaredInnerClasses()'。如果不改變類文件格式就不可能實現。 – 2009-11-01 01:40:24

+0

類支持元信息,這些信息可以發送到哪裏。我不認爲它在那裏,因爲可能沒有找到好的用例。也許你試圖做的事可以用另一種方式來完成。例如Enum的?? – 2009-11-01 07:57:20