2016-04-06 15 views
1

これは私のプログラムのソースコードです。行22では、関数sameValue(Gen ob)では、シンボル 'ob'を見つけることができないというエラーがあります。私は、なぜになっていないのですか? TNumberクラスがGen1がないことを意味するものではありません拡張という理由だけワイルドカードでSymbol not foundエラー

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)); 
    } 
} 
+4

'Gen1'クラスには' doubleValue'メソッドがありません。 – Savior

答えて

0

ob.getValue()(またはob.o.doubleValue()でも、これは実装の詳細を公開しています)のようなものが必要でした。

1

エラーメッセージが誤って表示されます。それはタイプGen1<?>obに何の方法doubleValueがないと文句を言い

Gen1Example.java:22: error: cannot find symbol 
     double x = ob.doubleValue(); 
       ^
    symbol: method doubleValue() 
    location: variable ob of type Gen1<?> 
1 error 

言います。 おそらくob.getValue()を意味します。

関連する問題