我想知道是否有办法用void或Object实现接口方法?
例如......
接口
public interface MyInterface {
public XXXXXXX myMethod();
}
和
实施类1
public class MyClassOne implements MyInterface {
public void myMethod() {
System.out.println("MyClassOne");
}
}
实施类2
public class MyClassTwo implements MyInterface {
public String myMethod() {
System.out.println("MyClassTwo");
return "MyClassTwo";
}
}
答案 0 :(得分:1)
MyInterface<T>
案例可以使用void
和Void
type:
public interface MyInterface<T> {
T myMethod();
}
public class MyClassOne implements MyInterface<Void> {
@Override
public Void myMethod() {
System.out.println("MyClassOne");
return null;
}
}
public class MyClassTwo implements MyInterface<String> {
@Override
public String myMethod() {
System.out.println("MyClassTwo");
return "MyClassTwo";
}
}
答案 1 :(得分:0)
Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的Class对象的引用。
答案 2 :(得分:0)
一般来说,我认为你尝试做的并不是一个好主意,因为有了它,你不能编程为接口,因为根据你期望的结果或没有。 使用带有Void的参数化类型可以显示问题。
实际上,您无法根据或多或少精确的类型进行类型化返回。 您在返回中处理Object类型的实例。
例如:
MyInterface myInterface = new MyClassOne();
Object myMethod = myInterface.myMethod();
所以,你必须做instanceof或getClass来猜测该做什么...... 你不再做OOP了。 界面失去了力量。
如果您需要一个带有返回的方法而另一个没有返回的方法,请创建两个方法。如果要使用单个方法,可以保持最宽泛(哪一个具有返回类型),当您没有要返回的信息时,返回null或特殊值。
方法必须有明确的责任。