我有两个类,他们有相同的静态方法名称和函数以及第三类,我需要在条件情况下调用它,因为我有两个,我需要决定哪个被调用依赖于某些情况
所以我可以制作这个条件语句if(m==n) {return new Class A()}
else {return new Class B()
在C类中的一个方法中,我可以用它来返回一个对象来指向A类或B类的方法
答案 0 :(得分:0)
您可以使用Java 8方法参考。
由于您没有显示任何代码,因此无法知道您的方法签名是什么,所以我假设void X()
,即没有参数和没有返回值。
Runnable r = (m==n ? A::mymethod : B::mymethod);
r.run();
如果签名(不包括方法名称)不同,则需要使用Runnable
以外的功能接口。
答案 1 :(得分:0)
一个简单的解决方案是返回一个Object
(这是你在Java中最接近void *
的东西)并使用instanceof来知道你得到了哪个类:
Object getMyObject(int m, int n) {
if(m==n) {
return new Class A();
}
else {
return new Class B();
}
}
void useObject(int m, int n)
{
Object o = getMyObject(m, n);
if (o instanceof A) {
A a = (A)o;
a.doSomething();
} else if (o instanceof B) {
B b = (B)o;
b.doSomethingElse();
}
}