java泛型参数约束,Java泛型参数绑定到任何类型的范围

是否有将通用类型参数约束为 任何 类型范围的语法或解决方法?

我知道您可以将一个类型限制为 所有 类型的范围(即AND逻辑):

public class MyClass & Serializable> { } // legal syntax

是否有OR逻辑版本,例如:

public class MyClass | Serializable> { } // illegal syntax

如果没有支持该语法的语法(我认为不存在),是否有一种好的方法或方法?

在某些情况下,一个示例用例可能是:

/** @return true if the obj is either has the same id, or if obj is the same as id */

public boolean sameAs(T obj) {

if (obj instanceof String) return this.id.equals(obj);

if (obj instanceof MyClass) return this.id.equals(((MyClass)obj).id);

return false;

}

人们似乎迷上了上面我的方法示例的确切语义。让我们尝试一下:

public class MyWrapper {

// my class can wrap A or B (unrelated classes). Yes I will probably use instanceof

}

编辑:

我不会在编译时知道(可能来自外部代码),所以我想避免每种类型都有具体的类。另外,我必须将我的类交给一个调用我的class.method的外部系统,但是另一个系统可以给我各种类的实例,但是它们的

定义 和 定义都 比较 狭窄 。

有人评论说instanceof“不纯正”。好的,一种解决方法是使用工厂方法根据传入对象的类来选择我的具体类,但是必须使用该工厂方法instanceof,因此您只需将其移动instanceof到另一个位置-

您仍然需要instanceof。

还是这个想法永远不是一个好主意?

你可能感兴趣的:(java泛型参数约束)