[英]How do I use java reflection to instantiate a class that cannot be imported?
我正在編寫 JUnit 測試來測試另一個必須匹配預定義規范的包中的代碼。 被測代碼必須包含一個嵌套類,我想在測試包內實例化該類——無法導入此類,因為它是嵌套的(因此在原始包外不可見)。
例如包結構:
packageA
-> ClassA
-> packageA.ClassA$ClassB
tests
-> ClassATest
我需要測試 ClassA 中的一個方法,該方法將 ClassB 的實例作為參數。
我目前正在使用反射從ClassA
(我可以導入)到ClassB
[ cls.getDeclaredClasses
]。 然后我可以獲得ClassB
[ cls.getDeclaredConstructor
] 的構造函數,從而使用找到的構造函數 [ constructor.newInstance
] 創建ClassB
的新實例。 這個對constructor.newInstance
調用返回一個Object
。
我如何從返回的Object
類型獲得正確的ClassB
類型,以便我可以將它傳遞給被測試的ClassA
方法?
首先,可以導入嵌套類。 不能`import static`靜態內部類嗎?
這聽起來是一個糟糕的設計,您被迫使用反射進行測試。
因為您從反射獲得了Object
並且您沒有可訪問的類型,所以您還應該再次使用反射將其傳遞給方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.