java - 声明扩展 2 个不同接口(interface)的类型属性

标签 java generics types attributes covariance

我想声明一个属性来保存实现 2 个不同接口(interface)的类的实例。我尝试过这种语法:

private <? extends Interface1 & Interface2> name;

还有这个:

private <T extends Interface1 & Interface2> T name;

这些都不起作用。是否可以?语法是什么?我试图避免声明另一个继承自 Interface1Interface2 的接口(interface)。

<小时/>

编辑:

包含此属性的类不应有任何类型参数。事实并非如此:

public class MyClass<T extends Interface1 & Interface2>{
    private T name;
    ...
}

对于使用该类的人来说,这没有任何意义。预计该类不可能是通用的,也不符合逻辑。

最佳答案

这需要放在类声明中,例如:

public class TestG<T extends Cloneable & Serializable> {
    private T name;
}

一种替代方法是将其设置在方法中(但不是变量)

public class TestG {
    public <T extends Cloneable & Serializable> void  method(T parameter) {
    }
}

关于java - 声明扩展 2 个不同接口(interface)的类型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429523/

相关文章:

java - 替换不必要的 scan.nextLine(); 的更好方法找到 StdIn 字符串?

java - Maven Clean、Update、Install 和 Eclipse Clean、Refresh、Build——一个通常正确的顺序?

java - 避免继承/委托(delegate)结构中的原始泛型类型

c# - 为什么要使用泛型和非泛型函数变体?

types - 为什么 Go 有几种不同的整数类型?

JAVA 时区问题 EDT 与 EST

java - 在 Java 中修改 .txt 文件

java - 以参数化类型作为参数返回不同类型对象列表的方法

关于整数文字的 C++ Primer 段落,需要有人澄清一些要点

types - Category 类中的 id 成员类型有什么意义?