我發現以下問題並回答Oracle網站爪哇 - 泛型類型 - 類型擦除
是什麼類型擦除後轉換爲下面的類呢?
public class Pair<K, V> {
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey(); { return key; }
public V getValue(); { return value; }
public void setKey(K key) { this.key = key; }
public void setValue(V value) { this.value = value; }
private K key;
private V value;
}
答:
public class Pair {
public Pair(Object key, Object value) {
this.key = key;
this.value = value;
}
public Object getKey() { return key; }
public Object getValue() { return value; }
public void setKey(Object key) { this.key = key; }
public void setValue(Object value) { this.value = value; }
private Object key;
private Object value;
}
但是,當我使用反編譯JD-GUI的類文件,我仍然可以看到所有類似的泛型類型我有什麼實際的源代碼。
這是否意味着泛型類型保留在類文件中?我正在使用Java 6.
使用JD-GUI的類的反編譯器版本如下。我使用Eclipse Helios編譯該類。
public class Pair<K, V>
{
private K key;
private V value;
public Pair(K key, V value)
{
this.key = key;
this.value = value;
}
public K getKey() {
return this.key; }
public V getValue() { return this.value; }
public void setKey(K key) {
this.key = key; }
public void setValue(V value) { this.value = value;
}
}
你是如何編譯這些類的?調試信息可能包含在某些編譯器選項中。 – madth3
我正在使用eclipse。所以,它會自動編譯這些類。然後我使用JD-GUI工具來反編譯類文件。 – Jack