相关疑难解决方法(0)

Java泛型参数绑定到任何类型的任何一种

是否存在将泛型类型参数约束到任何类型的语法或解决方法?

我知道您可以将类型约束为所有类型(即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)

java generics polymorphism

14
推荐指数
2
解决办法
4078
查看次数

标签 统计

generics ×1

java ×1

polymorphism ×1