प्रति Erasure of Generic Types पर जावा प्रलेखन के रूप में,जावा जेनेरिक्स प्रकार मिटाना बाइट कोड
निम्नलिखित सामान्य वर्ग है कि एक अकेले लिंक्ड सूची में एक नोड का प्रतिनिधित्व करता है पर विचार करें:
public class Node<T> {
private T data;
private Node<T> next;
public Node(T data, Node<T> next) }
this.data = data;
this.next = next;
}
public T getData() { return data; }
// ...
}
क्योंकि प्रकार पैरामीटर टी
public class Node {
private Object data;
private Node next;
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
public Object getData() { return data; }
// ...
}
: असीम है, जावा कम्पाइलर
वस्तु साथ यह बदल देता है
लेकिन जावा 1.7.0_11 के साथ संकलन के बाद, जब मैंने इसे किसी भी डिकंपेलर के साथ खोला तो मैं उसी कोड को स्रोत कोड जैसा देख सकता हूं।
public class Node<T>
{
private T data;
private Node<T> next;
public Node(T paramT, Node<T> paramNode)
{
this.data = paramT;
this.next = paramNode;
}
public T getData()
{
return this.data;
}
}
यदि टाइप-एरर संकलन पर लागू होता है तो बाइट कोड में ऊपर दिखाए गए जेनेरिक जानकारी नहीं होनी चाहिए। कृपया मुझे स्पष्ट करें।
नोट: मैं एक decompiler के रूप में JD-GUI उपयोग कर रहा हूँ अभी भी, बाईटकोड में सहेजा गया है वर्ग के सदस्यों के हस्ताक्षर जानकारी में विशेष रूप से बाइट कोड
आप अपने decompiler के लिए लिंक को ठीक कर सकता है? –
एक प्रकार के सामान्य होने के बीच एक अंतर है, और ठोस जेनेरिक प्रकार को जानने में सक्षम होना। –
मिटा _objects_ की सामान्य प्रकार की जानकारी मिटा देता है, नहीं _types._ –