这是我的程序的源代码..在第22行,在函数sameValue(Gen ob)中,有一个错误,表示无法找到符号' ob&# 39 ;.我没有得到,为什么?
class Gen1<T extends Number>
{
T o;
Gen1(T o)
{
this.o = o;
}
String getType()
{
return o.getClass().getName();
}
double getValue()
{
return o.doubleValue();
}
boolean sameValue(Gen1 <?> ob)
{
double x = ob.doubleValue();
if (getValue() == x)
return true;
else
return false;
}
}
class Gen1Example{
public static void main(String[] argv)
{
Gen1<Integer> o1 =new Gen1<Integer>(120);
System.out.println(o1.getType());
Gen1<Double> o2 =new Gen1<Double>(120.0);
System.out.println(o2.getType());
//Gen1<String> o2 =new Gen1<String>("This is a test");
//System.out.println(o2.getType());
System.out.println(o1.getValue());
System.out.println(o2.getValue());
System.out.println(o1.sameValue(o2));
}
}
答案 0 :(得分:1)
您误读了错误消息。它说
Gen1Example.java:22: error: cannot find symbol
double x = ob.doubleValue();
^
symbol: method doubleValue()
location: variable ob of type Gen1<?>
1 error
它抱怨ob
类型Gen1<?>
中没有方法doubleValue
。
你可能意味着ob.getValue()
。
答案 1 :(得分:0)
仅仅因为T
扩展Number
类并不意味着Gen1
。您可能想要ob.getValue()
(或ob.o.doubleValue()
,但这会暴露实施细节)。