我在Oracle网站上找到了以下问题和答案。
在类型擦除后,下列类被转换成什么?
但是,当我使用JD-GUI反编译class文件时,我仍然看到所有泛型类型与实际源代码中的类似。
这是否意味着泛型类型在class文件中保留?我正在使用Java 6。
使用JD-GUI解码器版本的类如下所示。 我正在使用Eclipse Helios编译类。
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反编译class文件时,我仍然看到所有泛型类型与实际源代码中的类似。
这是否意味着泛型类型在class文件中保留?我正在使用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;
}
}