首页 > 解决方案 > 多种通用类型

问题描述

因此,首先,我将说明我的问题不是指将多个泛型应用于一个类。我知道你可以用逗号简单地做到这一点。

我的问题是是否有一种方法可以为泛型提供多个可能的扩展。例如:

public class Foo<? extends String>{}
public class Bar<? extends StringBuilder>{}
//combined
public class FooBar<? extends String, StringBuilder>{}
//or perhaps
public class FooBar<? extends String || StringBuilder>{}

我知道 FooBar 类不会编译,但我希望这有助于解释我的问题和指定的意图。最后重申我的问题:是否可以在通用子句中扩展两个类或间接模拟这种行为的方式?

请注意,我不是在问泛型是如何工作的,也不是在询问扩展是如何工作的,也不是在询问如何以及何时使用泛型,因为我已经知道这一点。如果问题需要澄清,我将尽我所能进行编辑以提供进一步的理解。

标签: javagenericsextends

解决方案


一个类不可能同时扩展两者StringStringBuilder因为类只有一个父类。但是,它们可以实现多个接口,您可以使用&.

class FooBar<T extends String & Runnable & Collection<Integer>> {}

(请注意,这String是最终的,因此实际上不可能满足上述约束。)


推荐阅读