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