2017-04-30 1 views
0

Gibt „nicht-statische Variable nicht von einem statischen Kontext verwiesen werden kann“ gebenTemplate-Klasse Fehler mit primitiven Datentypen

Dies ist der Code unten für Template-Klasse

public class BiHashMap<K1, K2, V>{ 

    private final Map<K1, Map<K2, V>> mMap; 

    public BiHashMap() { 
     mMap = new HashMap<K1, Map<K2, V>>(); 
    } 

    public V put(K1 key1, K2 key2, V value) { 
     Map<K2, V> map; 
     if (mMap.containsKey(key1)) { 
      map = mMap.get(key1); 
     } else { 
      map = new HashMap<K2, V>(); 
      mMap.put(key1, map); 
     } 

     return map.put(key2, value); 
    } 

} 

public static void main(String[] args) { 
    BiHashMap<double,double,double> table1 = new BiHashMap<double,double,double>(); 
    table1.put(0.375,1,350); 

Ich habe versucht, eine neue Klasse für Doppel, aber der Fehler blieb

public class dbble{ 
    double number; 

    dbble(double x){ 
     number=x; 
    } 
} 
+0

Was ist das Fehlerprotokoll? –

+1

Sie können ** primitive Typen ** nicht als Vorlagenparameter verwenden (Java hat keine Vorlagenparameter, Sie meinen generische Typen), Sie müssen die Wrapper-Typen verwenden. –

+0

@EliottFrisch sind richtig. Ändere einfach 'new BiHashMap ();' to 'neue BiHashMap ();' –

Antwort

0

Ich habe Ihren Code oben getestet und bearbeitet, um ihn laufen zu lassen: (Sie müssen die main Funktion innerhalb der class setzen, müssen Sie wrapper type für double verwenden, und den Wert werfen, den Sie beim Aufruf der Funktion setzen).

public class BiHashMap<K1, K2, V> { 

private final Map<K1, Map<K2, V>> mMap; 

public BiHashMap() { 
    mMap = new HashMap<K1, Map<K2, V>>(); 
} 

public V put(K1 key1, K2 key2, V value) { 
    Map<K2, V> map; 
    if (mMap.containsKey(key1)) { 
     map = mMap.get(key1); 
    } else { 
     map = new HashMap<K2, V>(); 
     mMap.put(key1, map); 
    } 

    return map.put(key2, value); 
} 

public static void main(String[] args) { 
    BiHashMap<Double, Double, Double> table1 = new BiHashMap<Double, Double, Double>(); 
    table1.put(0.375, Double.valueOf(1), Double.valueOf(350)); 
} 
} 
Verwandte Themen