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