使用与泛型的接口实现java泛型
我有一个接口值和一个类记录
public interface Value<T> {
T getRawValue();
}
public class Record<Value<T>> {
private Value<T> value;
T getRecordRawValue() {
return value.getRawValue();
}
}
Java不会编译它,并抱怨泛型声明>。有人能告诉我为什么这是无效的语法吗
# 1 楼答案
您的
Record
类声明错误。应该是的# 2 楼答案
您需要绑定泛型类型以指示它是
Value<T>
的要求,并且还需要保留值Value<T>
提供的类型,因此Record
类需要两个泛型类型:T:返回值的类型和U:表示Value<T>
的类型public class Record<T, U extends Value<T>>
这里有一个完整的例子:
# 3 楼答案
代码
public class Record<Value<T>>
尝试为名为Value<T>
的类声明泛型类型参数,但在声明泛型类型参数时,它应该是一个简单的标识符,例如T
试试看