我试图了解这个java类定义是什么。
abstract public class A<P extends B<?, ?>,Input,Output>
{
...
// class defined
...
}
c ++程序员转向java
答案 0 :(得分:3)
这定义了一个名为A
的抽象类,它有三个类型参数:
P
,必须是B
类型(带有任何类型参数)或从中派生的任何类型Input
,任何类型Output
,任何类型感兴趣的是第一个类型参数。在C ++中,对于基于类型的模板参数,您可以提供任何类型;在Java中,您可以选择通过类和/或接口约束类型,类型也必须扩展/实现。
答案 1 :(得分:1)
一点“翻译”:
“abstract”表示此类可能具有抽象(〜=纯虚拟)方法。
A类是通用(〜模板)定义
P extends ...是泛型参数的额外约束,应该是......的子类
P延伸B <?,?&gt;表示通用参数#1是另一个泛型类的子类
答案 2 :(得分:1)
这是一个抽象类定义(显然),带有3个通用参数。
第一个参数P有一个约束,它必须是类型(或扩展)类/接口B,它有两个通用参数(没有约束),所以它可能像
public class B<T1, T2> {
}
第二个和第三个参数,即输入和输出没有约束。
答案 3 :(得分:-1)
尖括号表示法是Java Generics。
答案 4 :(得分:-1)
嗯,要真正理解它你想要包含更多的定义,但B是一个带有泛型的类,A中有三个泛型引用;它有点病态,但它很容易逐步完成。