我有两个类,他们有相同的静态方法名称和函数,第三类,我需要在条件情况下调用它,因为我有两个,我需要决定哪一个被称为依赖于某些情况下在java中返回指针
,所以我可以使这个条件语句if(m==n) {return new Class A()} else {return new Class B()
在C类中的方法,我可以用它来返回一个对象指向从A级或B
我有两个类,他们有相同的静态方法名称和函数,第三类,我需要在条件情况下调用它,因为我有两个,我需要决定哪一个被称为依赖于某些情况下在java中返回指针
,所以我可以使这个条件语句if(m==n) {return new Class A()} else {return new Class B()
在C类中的方法,我可以用它来返回一个对象指向从A级或B
您可以使用Java 8的方法引用的方法中。
既然你没有表现出任何代码,这是不可能知道你的方法签名是什么,所以我会认为void X()
,即没有参数和返回值。
Runnable r = (m==n ? A::mymethod : B::mymethod);
r.run();
如果签名(不包括方法名)是不同的,你需要使用比Runnable
其他功能接口。
这样做的一个简单的解决方案是返回一个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();
}
}
请发表您的代码,以帮助你 –
1)Java没有*指针*。 --- 2)为什么要创建类的实例,如果要调用的方法是'static'? – Andreas
是的,如果A和B都扩展相同的类或实现相同的接口,并且函数返回超类(对象始终工作)或接口。 – maraca