将类放入Object很容易。但是当我尝试在第36行上执行方法时:
aClass.getInfo(3);
我得到一个cannot find symbol
并且无法编译。我怎么能在对象中使用类?目的是使用classA或classB,具体取决于int或其他内容。
package testit;
public class TestIt {
Object aClass;
public interface InFace {
void getInfo(int i);
}
public class ClassA implements InFace {
@Override
public void getInfo(int i) {
System.out.println("ClassA: " + this.getClass() + " " + i);
}
}
public class ClassB implements InFace {
@Override
public void getInfo(int i) {
System.out.println("ClassB: " + this.getClass() + " " + i);
}
}
public void testClass() {
ClassA testA = new ClassA();
ClassB testB = new ClassB();
testA.getInfo(1);
testB.getInfo(2);
int i = 1;
if (i == 1) {
aClass = testA;
} else {
aClass = testB;
}
System.out.println("aClass: " + aClass.getClass());
// aClass.getInfo(3);
}
public static void main(String[] args) {
TestIt test = new TestIt();
test.testClass();
}
}
答案 0 :(得分:1)
由于aClass
仅包含ClassA
或ClassB
,它们都是InFace
的子类型,您可以更改
Object aClass;
到
InFace aClass;
然后,类型InFace
的变量将支持一个名为getInfo(int i)
的方法,您的代码将被编译。
答案 1 :(得分:0)
您应该使用InFace
来声明Object aClass;
,因为您的两个类都实现了该接口:
InFace aClass;