这个问题是 Java Generics Wildcarding With Multiple Classes 的后续问题.
我正在编写这样的界面:
public interface SomeInterface {
public Class<? extends SomeClass implements OtherInterface> getClassForObject(Object object);
}
我知道这是错误的语法,就像 Class<? extends SomeClass & OtherInterface>
一样。 ,似乎所有选项。
我无法让接口(interface)执行上面链接的问题的答案中建议的操作( public interface SomeInterface<T extends SomeClass & OtherInterface>
),因为此接口(interface)的实现可能希望针对不同的输入返回不同的内容。
我也无法创建一个扩展 SomeClass 并实现 OtherInterface 的抽象类,并从中扩展所有内容,因为客户端可能希望从中扩展 SomeClass 的许多现有实现。
是否有任何方法可以强制此接口(interface)的实现返回符合这两个约束的类型?除了在代码中的其他地方抛出运行时异常之外?
最佳答案
您不能对通配符施加多个限制。您可以在方法上声明泛型类型参数而不是接口(interface)本身,并且可以对其施加多种限制。尝试:
public interface SomeInterface {
public <T extends SomeClass & OtherInterface> Class<T>
getClassForObject(Object object);
}
关于java - 强制接口(interface)方法返回值为多个类的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090245/