【发布时间】:2020-11-24 10:25:41
【问题描述】:
可以,如果可以,如何访问另一个泛型参数的泛型参数,而不指定它?
下面的例子是根据我目前的情况进行简化的。所有成员和方法都被省略,因为它们与情况无关。 LibraryRepository 是一个 JPA/Spring 类型,期望一个 ENTITY 和一个 ID。
abstract class AbstractEntity<ID> {}
class ConcreteEntity extends AbstractEntity<Long> {}
interface AbstractRepository<ENTITY extends AbstractEntity<?????>> extends LibraryRepository<ENTITY, ?????> {}
//Desired declaration:
interface ConcreteRepository extends AbstractRepository<ConcreteEntity> {}
如果没有在AbstractRepository 上指定Long,那么写什么而不是两个?????,如果可能的话?
为了问题范围,请回答有关泛型的问题,而不是如何以更好的方式实现 spring-repositories。不过,我很高兴在 cmets 中获得有关这方面的提示。
【问题讨论】:
-
无关:类型参数遵循 java 命名约定,它们通常是单个字符。
-
这是示例。当类型有专有名称时,更容易争论类型。
-
“更容易”是主观的。大多数人习惯于遵循 java 标准,他们会发现多字符类型令人困惑。更糟糕的是,语言新手可能会把它们当作类名。
标签: java generics inheritance