Java 将接口用作类型

Java 将接口用作类型,java,oop,interface,Java,Oop,Interface,我在片段部分阅读了一些Android代码,并试图找出其背后的逻辑。我的类中有一个接口。我想根据一些条件,改变接口方法的字符串值。 例如,如果cond=false,代码将无法编译。我正在寻找一种具有相同结构的方法使其工作: 这是测试类: public class Test { InnerInterface interInstance; public interface InnerInterface { public String interfaceMethod(

我在片段部分阅读了一些Android代码,并试图找出其背后的逻辑。我的类中有一个接口。我想根据一些条件,改变接口方法的字符串值。 例如,如果cond=false,代码将无法编译。我正在寻找一种具有相同结构的方法使其工作:

这是测试类:

public class Test {

    InnerInterface interInstance;

    public interface InnerInterface {
        public String interfaceMethod(String s);
    }

    public void update() {
        String time = String.valueOf(System.currentTimeMillis());
        interInstance.interfaceMethod(time);
    }

    public static void main(String[] args) {

        boolean cond = true;
        Activity a = new Activity();
        Test t = new Test();

        if (cond)
            System.out.println(a.interfaceMethod("John"));
        else
            // this won't work of course
            t.update();
            System.out.println(a.interfaceMethod("Doe"));
    }

}
下面是活动课:

public class Activity implements Test.InnerInterface{
    @Override
    public String interfaceMethod(String s) {
        String actString =  s;
        return actString;
    }

}
怎么样

public static void main(String[] args) {

    boolean cond = false;
    Activity a = new Activity();
    Test t = new Test();
    t.interInstance=a; //Add this line to your code

    if (cond)
        System.out.println(a.interfaceMethod("John"));
    else
        t.update(); //interInstance mustn't be null at this point
        System.out.println(t.interInstance.interfaceMethod("Doe"));
}

这是代码编译吗?你的问题是什么?你的具体问题是什么?cond=true时,代码会编译,但在false条件下,我想找到一种方法使其编译!if/else没有大括号{}是一种不好的做法。如果{…}否则{…}更好。此外,如果您想要t.update,则不能将interInstance字段设置为null。