我正在编写一个抽象类,一个类扩展它。
public abstract class stream<T>{
public abstract T data();
}
上面是抽象类。
public class IntegerStream<Integer> extends stream{
private Integer InitialV;
public IntegerStream(Integer InitialV){
this.InitialV = InitialV;
}
public Integer next(){
InitialV = InitialV + 1;
}
@Override
public Integer data() {
return InitialV;
}
}
结果应该是这样的 什么时候创建
stream = new IntegerStream(10);
> stream.next()
10
> stream.next()
11
> stream.next()
12
但是当我尝试编译它时出现错误:
operator + cannot be applied to Integer,int
任何人都可以帮助我..
答案 0 :(得分:6)
在此声明中
public class IntegerStream<Integer> extends stream{
Integer
之间的名称<>
声明了一个名为Integer
的类型变量,它不是指类型java.lang.Integer
。
它也是一种无界类型,因此可以使用任何类型。因此,运算符+
不能应用于该类型的操作数。
你可能想要的是
public class IntegerStream extends stream<Integer> {
以便绑定Integer
(java.lang.Integer
)作为通用stream
类的类型参数(将其设为大写Stream
)。