オラクルのウェブサイトで次の質問と回答を見つけました
型消去後に変換された次のクラスは何ですか?
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;
}
}