Java 泛型 : parametricise a generic type

标签 java templates generics

早上好,我正在编写一些java代码,我想做这样的东西:

public class MyClass <E, T extends MyInterface<T<E>>> { } 

这样,T应该既是泛型又是实现MyInterface的类的实例,并且应该是E类型的参数。但在Java中似乎不可能,或者也许我解决问题的方法是错误的。提前致谢。

更新:

首先感谢所有回复的人,现在只是为了让事情变得清楚并让您了解我想要实现的目标,我想制作一个通用 TDA 的通用容器。 假设我们需要一个基于整数的堆栈容器,那么我需要编写类似这样的内容:MyContainer,当然我需要将插入部分的类型分开,否则我可以编写MyContainer>。此外,由于我所有的 TDA 都实现了 MyInterface,所以我也想将其设置为绑定(bind)。 所以我猜

public class MyContainer < E, T extends MyInterface < E>> 
应该可以解决问题。

最佳答案

这没有道理。

public class MyClass <E, T extends MyInterface<T<E>>> { } 

因为最右边的T。为什么你想用它自己来参数化一个类?我认为您真正的意思是:

public MyClass<E, T extends MyInterface<E>>

这本质上意味着对于每个 MyClass,您需要一个 E 和一个 T MyInterface 实例,该实例又被参数化以与 E 一起使用。

我发现初学者可能对泛型非常着迷,这可能会导致代码完全不可读。谨慎使用泛型,并考虑在每个给定实例中是否真的需要它们。如果您发现自己编写的代码具有多层嵌套泛型参数化,那么您可能在设计方面做错了。

关于Java 泛型 : parametricise a generic type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013229/

相关文章:

java - 是否可以像 Python 脚本一样返回整个 Java 程序?

java - Tomcat 在一个月不活动后关闭连接 - 如何避免?

java - Jersey 客户端在获取请求时给出 IllegalArgumentException?

c# - System.Reflection 与泛型——性能

java - 使用类构造函数设置数组值时出现 NullPointerException

c++ - 如何理解C++模板的输出结果

c++ - "Dynamic"没有模板或向下转换的参数类型(?)

templates - Ansible 模板 - 目标目录不存在错误

c# - 派生类定义的基类集合

c# - 从对象列表中创建包含多列的 CSV