2012-04-02 26 views
10

निम्नलिखित कोड का उपयोग कर JDK6 संकलित (मैंने कोशिश की 1.6.0_24)परस्पर आत्म-संदर्भ प्रकार पैरामीटर जेडीके 6 के तहत संकलित लेकिन 7 नहीं?

class XY<A extends XY<A, B>, B extends XY<B, A>> { } 

लेकिन JDK7 तहत संकलन (जैसे 1.7.0), मैं इस त्रुटि मिलती है:

XY.java:1: error: type argument B is not within bounds of type-variable A 
class XY<A extends XY<A, B>, B extends XY<B, A>> { 
            ^
    where B,A are type-variables: 
    B extends XY<B,A> declared in class XY 
    A extends XY<A,B> declared in class XY 
1 error 

कर सकते हैं कोई भी के रूप में इंगित करता है कि क्या जावा की जेनेरिक में यह जानबूझकर परिवर्तन था?

+0

यह ठीक संकलित जावा के साथ मेरे लिए = = 1.7.0_02 –

+0

वास्तव में? क्या आपको यकीन है? मैं ** 1.7.0_02-b13 ** –

+0

का उपयोग कर रहा हूं यह मजेदार है। यह जावा 7 सुविधाओं के साथ ग्रहण में संकलित है। मैंने कमांड लाइन के माध्यम से कोशिश की और मुझे यकीन है कि मुझे एक ही संकलक त्रुटि मिलती है। –

उत्तर

4

ऐसा लगता है कि यह एक बग है जो ओपनजेडीके से आता है और टाइप-वेरिएबल प्रतिस्थापन में एक बग के कारण होता है।

ऐसा प्रतीत होता है जब आप उदाहरण के लिए सामान्य चर स्विच:

class XY<A extends XY<A, B>, B extends XY<B, A>> { } 
class XY<A extends XY<B, A>, B extends XY<A, B>> { } 

यह इस में प्रकट नहीं होता:

class XY<A extends XY<A, B>, B extends XY<A, B>> { } 
class XY<A extends XY<B, A>, B extends XY<B, A>> { } 

तुम यहाँ एक और उदाहरण देख सकते हैं: http://old.nabble.com/Apparent-generics-compilation-bug-new-to-Java-1.7-td33378164.html

संबंधित मुद्दे