class B {
private B() {}
public void test() {
System.out.println("hello");
}
}
public class A {
public static void main(String[] args) {}
}
回答
選項1(改變類的構造函數需要簽字):充分利用構造方法的類B
,四通八達,即不private
。然後,創建的B
一個實例,並調用方法:
public static void main(String[] args) {
B b = new B();
b.test();
}
選項2(改變方法需要簽名):使test()
方法static
:
public static void test() {
System.out.println("hello");
}
然後,你可以調用沒有事先實例化:
public static void main(String[] args) {
B.test();
}
選項3(無需更改代碼需要):使用反射:
method = B.getClass().getDeclaredMethod("test");
method.setAccessible(true);
method.invoke(object);
你在這裏創造一個私有的構造,這意味着你cna't B級製作外isntantiate B類它public
然後弗洛darijan的回答
class B {
public B() {}
public void test() {
System.out.println("hello");
}
}
public class A {
public static void main(String[] args) {
B b = new B();
b.test();
}
}
他不能使用Reflection調用該方法嗎? – NINCOMPOOP
新白癡,抱歉不知道我們可以用反射來做到這一點。 –
我之前有過seens darijan的回答,他在我發佈之後編輯了'private'構造函數,我只是添加了'private'部分,並且信譽已經提供給darijan進行實例化。 –
,如果你想訪問你的測試方法,你不能實例化一個ClasB,因爲它有私有的構造函數將構造函數更改爲public。如果這不是您的要求
1.如果您的測試方法定義是不是一個對象取決於您可以訪問使用reflection
或者
2.方法,可以使靜態方法和訪問,通過類名
由於test
是一個實例方法,所以您需要使用類B
的對象調用該方法。您已將類B
的構造函數聲明爲private,因此您將無法使用new
運算符在類B
之外創建B
對象。您可以使用反射:
Constructor<B> constructor=B.class.getDeclaredConstructor();
constructor.setAccessible(true);
B b = constructor.newInstance();
b.test();
這是一個新的東西要學習:)謝謝你:) upvote from me –
- 1. 我怎麼能叫刷新方法
- 2. 從測試類B的方法調用測試類A的方法
- 3. 我怎麼能叫Weblement其他類
- 4. 我怎麼能叫片段從listadapter
- 5. 我怎麼能叫從routes.rb中
- 6. 我怎麼能叫定時器的方法?
- 7. 我怎麼叫我的功能.NET
- 8. 我如何從B級執行A類的run方法
- 9. 寫作班級的方法測試類
- 10. 我怎麼能測試lib文件夾
- 11. 我怎麼能測試ClassNotFoundException被拋出?
- 12. 我怎麼可以叫仿製T類方法在C#
- 13. 我不能叫我的方法從類形式
- 14. 我怎麼叫sqljdbc_auth.dll
- 15. 我怎麼能與NUnit測試單元測試UWP應用
- 16. C++我怎麼能叫帶參數
- 17. 我怎麼能叫@ Html.TextBoxFor在cs文件
- 18. 我怎麼能叫使用按鈕
- 19. 我怎麼叫的柔性
- 20. B類A類呼叫功能
- 21. 我怎麼能測試一個方法不被稱爲非模擬對象?
- 22. 從另一個測試類調用測試類的方法
- 23. 我怎麼能從物流回歸得到類別預測
- 24. 我怎麼能預測我的變量
- 25. 我怎麼能模擬星級的Widget
- 26. 我該怎麼做才能改善我的測試?
- 27. onCreateView()方法要求超級類呼叫
- 28. 怎麼就是Java能夠從方法
- 29. 的JUnit如何嘲笑我想測試方法在子類b。添加的超
- 30. 排除測試方法「A」,幷包含依賴於「A」的測試方法「B」
問題是什麼?添加一些問題的文本表示並設置你的代碼的格式,那麼這裏的專家肯定會提供答案 –
你需要B的構造函數的「私有」可見性嗎? –
請告訴我,如果有任何方法在相同的代碼中調用該方法。 – aaa1