आप गतिशील रूप से प्रकार प्रदान कर सकते हैं, हालांकि संकलक स्वचालित रूप से आपके लिए यह नहीं करता है।
public abstract class LastActionHero<H extends Hero>(){
protected final Class<H> hClass;
protected LastActionHero(Class<H> hClass) {
this.hClass = hClass;
}
// use hClass how you like.
}
बीटीडब्ल्यू: यह गतिशील रूप से प्राप्त करना असंभव नहीं है, लेकिन यह इस बात पर निर्भर करता है कि इसका उपयोग कैसे किया जाता है। उदाहरण के लिए
public class Arnie extends LastActionHero<MuscleHero> { }
यह निर्धारित करना संभव है कि Arnie.class में MuscleHero के जेनेरिक पैरामीटर के साथ एक सुपर क्लास है।
public class Arnie<H extend Hero> extends LastActionHero<H> { }
सुपर वर्ग के सामान्य पैरामीटर सिर्फ H
इस मामले में हो जाएगा।
स्रोत
2011-03-25 13:42:57