我有两个类,A类和B类,每个类都有一个同名的方法。是否有可能有一个类型Object
的变量,它可以包含两种类型的类并执行它们的方法?
作为我的意思的一个例子:
class A {
public void doSomething() {
...
}
}
class B {
public void doSomething() {
...
}
}
class Test {
Object obj;
if (isTrue)
obj = new A();
else
obj = new B();
obj.doSomething();
}
我调查了反思,但我不确定它是否可以用来做我想做的事。
任何帮助都很酷,谢谢。
答案 0 :(得分:3)
您可以做的最好的事情是创建一个接口并让两个类实现它。这样,您可以使用单个公共类型来分配这些对象,而不必进行实例检查或转换。
public interface C {
void doSomething();
}
public class A implements C {
@Override
public void doSomething() {
}
}
public class B implements C {
@Override
public void doSomething() {
}
}
public class Test {
public C obj;
obj = new A(); // or new B()
obj.doSomething();
}
答案 1 :(得分:1)
Java Polymorphism是关键。让您的类实现一个定义方法的接口:
interface DoSomethingable {
void doSomething();
}
class A implements DoSomethingable {
public void doSomething() {
...
}
}
class B implements DoSomethingable {
public void doSomething() {
...
}
}
class Test {
public static void main(String... args) {
DoSomethingable obj;
if (isTrue) {
obj = new A();
} else {
obj = new B();
}
obj.doSomething();
}
}