如何将一个java类放在一个Object中并使用它的方法

时间:2015-03-17 07:46:13

标签: java

将类放入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();
    }
}

2 个答案:

答案 0 :(得分:1)

由于aClass仅包含ClassAClassB,它们都是InFace的子类型,您可以更改

Object aClass;

InFace aClass;

然后,类型InFace的变量将支持一个名为getInfo(int i)的方法,您的代码将被编译。

答案 1 :(得分:0)

您应该使用InFace来声明Object aClass;,因为您的两个类都实现了该接口:

InFace aClass;