是否存在将泛型类型参数约束到任何类型的语法或解决方法?
我知道您可以将类型约束为所有类型(即AND逻辑):
public class MyClass<T extends Comparable<T> & Serializable> { } // legal syntax
Run Code Online (Sandbox Code Playgroud)
是否有OR逻辑版本,即这样的东西:
public class MyClass<T extends Comparable<T> | Serializable> { } // illegal syntax
Run Code Online (Sandbox Code Playgroud)
如果没有支持这种语法的语法(我认为没有),是否有一种解决方法或方法是一个好的模式?
对于某些上下文,一个示例用例可能是:
/** @return true if the obj is either has the same id, or if obj is the same as id */
public <T extends MyClass | String> boolean sameAs(T obj) {
if (obj instanceof String) return this.id.equals(obj);
if (obj instanceof MyClass) return this.id.equals(((MyClass)obj).id); …Run Code Online (Sandbox Code Playgroud)