2016-04-06 6 views
1

Dies ist der Quellcode für mein Programm .. Auf Zeile 22, in der Funktion sameValue (Gen ob), gibt es einen Fehler, der besagt, dass es nicht finden kann, Symbol 'ob'. Ich verstehe nicht, warum?Symbol nicht gefunden Fehler in Platzhalter

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

Ihre 'Gen1' Klasse hat keine' doubleValue' Methode. – Savior

Antwort

0

Nur weil T erstreckt sich die Number Klasse bedeutet nicht, dass Gen1 tut. Sie wollten wahrscheinlich etwas wie ob.getValue() (oder ob.o.doubleValue(), aber dies zeigt Details der Implementierung) stattdessen.

1

Sie haben die Fehlermeldung falsch gelesen. Es sagt

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

Sie wirft in ob vom Typ Gen1<?> es keine Methode ist doubleValue. Sie wahrscheinlich ob.getValue() gemeint.