Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÁÄÁÄJavaµÄ·ºÐͼ°ÊµÏÖ
 
À´Ô´£º¿ªÔ´ÖйúÉçÇø  ·¢²¼ÓÚ 2017-3-13
  1380  次浏览      27
 

·ºÐÍ»ù´¡

·ºÐÍÊǶÔJavaÓïÑÔÀàÐÍϵͳµÄÒ»ÖÖÀ©Õ¹£¬ÓеãÀàËÆÓÚC++µÄÄ£°å£¬¿ÉÒÔ°ÑÀàÐͲÎÊý¿´×÷ÊÇʹÓòÎÊý»¯ÀàÐÍʱָ¶¨µÄÀàÐ͵ÄÒ»¸öռλ·û¡£ÒýÈë·ºÐÍ£¬ÊǶÔJavaÓïÑÔÒ»¸ö½Ï´óµÄ¹¦ÄÜÔöÇ¿£¬´øÀ´Á˺ܶàµÄºÃ´¦£º

ÀàÐͰ²È«¡£ÀàÐÍ´íÎóÏÖÔÚÔÚ±àÒëÆÚ¼ä¾Í±»²¶»ñµ½ÁË£¬¶ø²»ÊÇÔÚÔËÐÐʱµ±×÷java.lang.ClassCastExceptionչʾ³öÀ´£¬½«ÀàÐͼì²é´ÓÔËÐÐʱŲµ½±àÒëʱÓÐÖúÓÚ¿ª·¢Õ߸üÈÝÒ×ÕÒµ½´íÎ󣬲¢Ìá¸ß³ÌÐòµÄ¿É¿¿ÐÔ

Ïû³ýÁË´úÂëÖÐÐí¶àµÄÇ¿ÖÆÀàÐÍת»»£¬ÔöÇ¿ÁË´úÂëµÄ¿É¶ÁÐÔ

Ϊ½Ï´óµÄÓÅ»¯´øÀ´ÁË¿ÉÄÜ

·ºÐÍÊÇʲô²¢²»»á¶ÔÒ»¸ö¶ÔÏóʵÀýÊÇʲôÀàÐ͵ÄÔì³ÉÓ°Ï죬ËùÒÔ£¬Í¨¹ý¸Ä±ä·ºÐ͵ķ½Ê½ÊÔͼ¶¨Ò岻ͬµÄÖØÔØ·½·¨ÊDz»¿ÉÒԵġ£Ê£ÏµÄÄÚÈÝÎÒ²»»á¶Ô·ºÐ͵ÄʹÓÃ×ö¹ý¶àµÄ½²Êö£¬·ºÐ͵ÄͨÅä·ûµÈ֪ʶÇë×ÔÐвéÔÄ¡£

ÔÚ½øÈëÏÂÃæµÄÂÛÊö֮ǰÎÒÏëÏÈÎʼ¸¸öÎÊÌ⣺

¶¨ÒåÒ»¸ö·ºÐÍÀà×îºóµ½µ×»áÉú³É¼¸¸öÀ࣬±ÈÈçArrayList<T>µ½µ×Óм¸¸öÀà

¶¨ÒåÒ»¸ö·ºÐÍ·½·¨×îÖÕ»áÓм¸¸ö·½·¨ÔÚclassÎļþÖÐ

Ϊʲô·ºÐͲÎÊý²»ÄÜÊÇ»ù±¾ÀàÐÍÄØ

ArrayList<Integer>ÊÇÒ»¸öÀàÂð

ArrayList<Integer>ºÍList<Integer>ºÍArrayList<Number>ºÍList<Number>ÊÇʲô¹ØÏµÄØ£¬Õ⼸¸öÀàÐ͵ÄÒýÓÃÄÜÏ໥¸³ÖµÂð

ÀàÐͲÁ³ý

ÕýÈ·Àí½â·ºÐ͸ÅÄîµÄÊ×ҪǰÌáÊÇÀí½âÀàÐͲÁ³ý£¨type erasure£©¡£ JavaÖеķºÐÍ»ù±¾É϶¼ÊÇÔÚ±àÒëÆ÷Õâ¸ö²ã´ÎÀ´ÊµÏֵġ£ÔÚÉú³ÉµÄJava×Ö½Ú´úÂëÖÐÊDz»°üº¬·ºÐÍÖеÄÀàÐÍÐÅÏ¢µÄ¡£Ê¹Ó÷ºÐ͵Äʱºò¼ÓÉϵÄÀàÐͲÎÊý£¬»á±»±àÒëÆ÷ÔÚ±àÒëµÄʱºòÈ¥µô¡£Õâ¸ö¹ý³Ì¾Í³ÆÎªÀàÐͲÁ³ý¡£ÈçÔÚ´úÂëÖж¨ÒåµÄList<Object>ºÍList<String>µÈÀàÐÍ£¬ÔÚ±àÒëÖ®ºó¶¼»á±ä³ÉList¡£JVM¿´µ½µÄÖ»ÊÇList£¬¶øÓÉ·ºÐ͸½¼ÓµÄÀàÐÍÐÅÏ¢¶ÔJVMÀ´ËµÊDz»¿É¼ûµÄ¡£Java±àÒëÆ÷»áÔÚ±àÒëʱ¾¡¿ÉÄܵķ¢ÏÖ¿ÉÄܳö´íµÄµØ·½£¬µ«ÊÇÈÔÈ»ÎÞ·¨±ÜÃâÔÚÔËÐÐʱ¿Ì³öÏÖÀàÐÍת»»Òì³£µÄÇé¿ö¡£ÀàÐͲÁ³ýÒ²ÊÇJavaµÄ·ºÐÍʵÏÖ·½Ê½ÓëC++Ä£°å»úÖÆÊµÏÖ·½Ê½Ö®¼äµÄÖØÒªÇø±ð¡£

ºÜ¶à·ºÐÍµÄÆæ¹ÖÌØÐÔ¶¼ÓëÕâ¸öÀàÐͲÁ³ýµÄ´æÔÚÓйأ¬°üÀ¨£º

·ºÐÍÀಢûÓÐ×Ô¼º¶ÀÓеÄClassÀà¶ÔÏó¡£±ÈÈç²¢²»´æÔÚList<String>.class»òÊÇList<Integer>.class£¬¶øÖ»ÓÐList.class¡£

¾²Ì¬±äÁ¿ÊDZ»·ºÐÍÀàµÄËùÓÐʵÀýËù¹²ÏíµÄ¡£¶ÔÓÚÉùÃ÷ΪMyClass<T>µÄÀ࣬·ÃÎÊÆäÖеľ²Ì¬±äÁ¿µÄ·½·¨ÈÔÈ»ÊÇ MyClass.myStaticVar¡£²»¹ÜÊÇͨ¹ýnew MyClass<String>»¹ÊÇnew MyClass<Integer>´´½¨µÄ¶ÔÏ󣬶¼Êǹ²ÏíÒ»¸ö¾²Ì¬±äÁ¿¡£

·ºÐ͵ÄÀàÐͲÎÊý²»ÄÜÓÃÔÚJavaÒì³£´¦ÀíµÄcatchÓï¾äÖС£ÒòΪÒì³£´¦ÀíÊÇÓÉJVMÔÚÔËÐÐʱ¿ÌÀ´½øÐеġ£ÓÉÓÚÀàÐÍÐÅÏ¢±»²Á³ý£¬JVMÊÇÎÞ·¨Çø·ÖÁ½¸öÒì³£ÀàÐÍMyException<String>ºÍMyException<Integer>µÄ¡£¶ÔÓÚJVMÀ´Ëµ£¬ËüÃǶ¼ÊÇ MyExceptionÀàÐ͵ġ£Ò²¾ÍÎÞ·¨Ö´ÐÐÓëÒì³£¶ÔÓ¦µÄcatchÓï¾ä¡£

ÀàÐͲÁ³ýµÄ»ù±¾¹ý³ÌÒ²±È½Ï¼òµ¥£¬Ê×ÏÈÊÇÕÒµ½ÓÃÀ´Ìæ»»ÀàÐͲÎÊýµÄ¾ßÌåÀà¡£Õâ¸ö¾ßÌåÀàÒ»°ãÊÇObject¡£Èç¹ûÖ¸¶¨ÁËÀàÐͲÎÊýµÄÉϽçµÄ»°£¬ÔòʹÓÃÕâ¸öÉϽ硣°Ñ´úÂëÖеÄÀàÐͲÎÊý¶¼Ìæ»»³É¾ßÌåµÄÀࡣͬʱȥµô³öÏÖµÄÀàÐÍÉùÃ÷£¬¼´È¥µô<>µÄÄÚÈÝ¡£±ÈÈçT get()·½·¨ÉùÃ÷¾Í±ä³ÉÁËObject get()£»List<String>¾Í±ä³ÉÁËList¡£

·ºÐ͵ÄʵÏÖÔ­Àí

ÒòΪÖÖÖÖÔ­Òò£¬Java²»ÄÜʵÏÖÕæÕýµÄ·ºÐÍ£¬Ö»ÄÜʹÓÃÀàÐͲÁ³ýÀ´ÊµÏÖα·ºÐÍ£¬ÕâÑùËäÈ»²»»áÓÐÀàÐÍÅòÕÍ£¨C++Ä£°åÁîÈËÀ§ÈŵÄÄÑÌ⣩µÄÎÊÌ⣬µ«ÊÇÒ²ÒýÆðÁËÐí¶àеÄÎÊÌâ¡£ËùÒÔ£¬Sun¶ÔÕâЩÎÊÌâ×÷³öÁËÐí¶àÏÞÖÆ£¬±ÜÃâÎÒÃÇ·¸¸÷ÖÖ´íÎó¡£

±£Ö¤ÀàÐͰ²È«

Ê×ÏȵÚÒ»¸öÊÇ·ºÐÍËùÐû³ÆµÄÀàÐͰ²È«£¬¼ÈÈ»ÀàÐͲÁ³ýÁË£¬ÈçºÎ±£Ö¤ÎÒÃÇÖ»ÄÜʹÓ÷ºÐͱäÁ¿ÏÞ¶¨µÄÀàÐÍÄØ£¿java±àÒëÆ÷ÊÇͨ¹ýÏȼì²é´úÂëÖзºÐ͵ÄÀàÐÍ£¬È»ºóÔÙ½øÐÐÀàÐͲÁ³ý£¬ÔÚ½øÐбàÒëµÄ¡£ÄÇÀàÐͼì²éÊÇÕë¶ÔË­µÄÄØ£¬ÈÃÎÒÃÇÏÈ¿´Ò»¸öÀý×Ó¡£

ArrayList<String> arrayList1=new ArrayList(); // ÕýÈ·£¬Ö»ÄÜ·ÅÈëString 
ArrayList arrayList2=new ArrayList<String>(); // ¿ÉÒÔ·ÅÈëÈÎÒâObject

ÕâÑùÊÇûÓдíÎóµÄ£¬²»¹ý»áÓиö±àÒëʱ¾¯¸æ¡£²»¹ýÔÚµÚÒ»ÖÖÇé¿ö£¬¿ÉÒÔʵÏÖÓë ÍêȫʹÓ÷ºÐͲÎÊýÒ»ÑùµÄЧ¹û£¬µÚ¶þÖÖÔòÍêȫûЧ¹û¡£ÒòΪ£¬±¾À´ÀàÐͼì²é¾ÍÊDZàÒëʱÍê³ÉµÄ¡£new ArrayList()Ö»ÊÇÔÚÄÚ´æÖпª±ÙÒ»¸ö´æ´¢¿Õ¼ä£¬¿ÉÒÔ´æ´¢ÈκεÄÀàÐͶÔÏó¡£¶øÕæÕýÉæ¼°ÀàÐͼì²éµÄÊÇËüµÄÒýÓã¬ÒòΪÎÒÃÇÊÇʹÓÃËüÒýÓÃarrayList1 À´µ÷ÓÃËüµÄ·½·¨£¬±ÈÈç˵µ÷ÓÃadd()·½·¨¡£ËùÒÔarrayList1ÒýÓÃÄÜÍê³É·ºÐÍÀàÐ͵ļì²é¡£ ¶øÒýÓÃarrayList2ûÓÐʹÓ÷ºÐÍ£¬ËùÒÔ²»ÐС£

ÀàÐͼì²é¾ÍÊÇÕë¶ÔÒýÓõģ¬Ë­ÊÇÒ»¸öÒýÓã¬ÓÃÕâ¸öÒýÓõ÷Ó÷ºÐÍ·½·¨£¬¾Í»á¶ÔÕâ¸öÒýÓõ÷Óõķ½·¨½øÐÐÀàÐͼì²â£¬¶øÎÞ¹ØËüÕæÕýÒýÓõĶÔÏó¡£

ʵÏÖ×Ô¶¯ÀàÐÍת»»

ÒòΪÀàÐͲÁ³ýµÄÎÊÌ⣬ËùÒÔËùÓеķºÐÍÀàÐͱäÁ¿×îºó¶¼»á±»Ì滻ΪԭʼÀàÐÍ¡£ÕâÑù¾ÍÒýÆðÁËÒ»¸öÎÊÌ⣬¼ÈÈ»¶¼±»Ì滻ΪԭʼÀàÐÍ£¬ÄÇôΪʲôÎÒÃÇÔÚ»ñÈ¡µÄʱºò£¬²»ÐèÒª½øÐÐÇ¿ÖÆÀàÐÍת»»ÄØ£¿

public class Test {   
public static void main(String[] args) {
ArrayList<Date> list=new ArrayList<Date>();
list.add(new Date());
Date myDate=list.get(0);
}
}

±àÒëÆ÷Éú³ÉµÄclassÎļþÖлáÔÚÄãµ÷Ó÷ºÐÍ·½·¨Íê³ÉÖ®ºó·µ»Øµ÷Óõã֮ǰ¼ÓÉÏÀàÐÍת»»µÄ²Ù×÷£¬±ÈÈçÉÏÎĵÄgetº¯Êý£¬¾ÍÊÇÔÚget·½·¨Íê³Éºó£¬jump»ØÔ­±¾µÄ¸³Öµ²Ù×÷µÄÖ¸ÁîλÖÃ֮ǰ¼ÓÈëÁËÇ¿ÖÆ×ª»»£¬×ª»»µÄÀàÐÍÓɱàÒëÆ÷ÍÆµ¼¡£

·ºÐÍÖеļ̳йØÏµ

ÏÈ¿´Ò»¸öÀý×Ó£º

class DateInter extends A<Date> {   
@Override
public void setValue(Date value) {
super.setValue(value);
}
@Override
public Date getValue() {
return super.getValue();
}
}

ÏÈÀ´·ÖÎösetValue·½·¨£¬¸¸ÀàµÄÀàÐÍÊÇObject£¬¶ø×ÓÀàµÄÀàÐÍÊÇDate£¬²ÎÊýÀàÐͲ»Ò»Ñù£¬ÕâÈç¹ûʵÔÚÆÕͨµÄ¼Ì³Ð¹ØÏµÖУ¬¸ù±¾¾Í²»»áÊÇÖØÐ´£¬¶øÊÇÖØÔØ¡£

public void setValue(java.util.Date);  
//ÎÒÃÇÖØÐ´µÄsetValue·½·¨
Code:
0: aload_0
1: aload_1
2: invokespecial #16
// invoke A setValue
:(Ljava/lang/Object;)V
5: return

public java.util.Date getValue();
//ÎÒÃÇÖØÐ´µÄgetValue·½·¨
Code:
0: aload_0
1: invokespecial #23
// A.getValue
:()Ljava/lang/Object;
4: checkcast #26
7: areturn

public java.lang.Object getValue();
//±àÒëʱÓɱàÒëÆ÷Éú³ÉµÄ·½·¨
Code:
0: aload_0
1: invokevirtual #28
// Method getValue:() È¥µ÷ÓÃÎÒÃÇÖØÐ´µÄgetValue·½·¨
;
4: areturn

public void setValue(java.lang.Object);
//±àÒëʱÓɱàÒëÆ÷Éú³ÉµÄ·½·¨
Code:
0: aload_0
1: aload_1
2: checkcast #26
5: invokevirtual #30
// Method setValue; È¥µ÷ÓÃÎÒÃÇÖØÐ´µÄsetValue·½·¨
)V
8: return

²¢ÇÒ£¬»¹ÓÐÒ»µãÒ²Ðí»áÓÐÒÉÎÊ£¬×ÓÀàÖеķ½·¨ Object getValue()ºÍDate getValue()ÊÇͬ ʱ´æÔڵģ¬¿ÉÊÇÈç¹ûÊdz£¹æµÄÁ½¸ö·½·¨£¬ËûÃǵķ½·¨Ç©ÃûÊÇÒ»ÑùµÄ£¬Ò²¾ÍÊÇ˵ÐéÄâ»ú¸ù±¾²»ÄÜ·Ö±ðÕâÁ½¸ö·½·¨¡£Èç¹ûÊÇÎÒÃÇ×Ô¼º±àдJava´úÂ룬ÕâÑùµÄ´úÂëÊÇÎÞ·¨Í¨¹ý±àÒëÆ÷µÄ¼ì²éµÄ£¬µ«ÊÇÐéÄâ»úÈ´ÊÇÔÊÐíÕâÑù×öµÄ£¬ÒòΪÐéÄâ»úͨ¹ý²ÎÊýÀàÐͺͷµ»ØÀàÐÍÀ´È·¶¨Ò»¸ö·½·¨£¬ËùÒÔ±àÒëÆ÷ΪÁËʵÏÖ·ºÐ͵Ķà̬ÔÊÐí×Ô¼º×öÕâ¸ö¿´ÆðÀ´¡°²»ºÏ·¨¡±µÄÊÂÇ飬Ȼºó½»¸øÐéÄâÆ÷È¥Çø±ð¡£

ÎÒÃÇÔÙ¿´Ò»¸ö¾­³£³öÏÖµÄÀý×Ó¡£

class A { 
Object get(){
return new Object();
}
}

class B extends A {
@Override
Integer get() {
return new Integer(1);
}
}

public static void main(String[] args){
A a = new B();
B b = (B) a;
A c = new A();
a.get();
b.get();
c.get();
}

·´±àÒëÖ®ºóµÄ½á¹û

7: invokespecial #5             
// Method com/suemi/network/test/A."<init>":()V
20: astore_3
21: aload_1
22: invokevirtual #6
// Method com/suemi/network/test/A.get:()Ljava/lang/Object;
25: pop
26: aload_2
27: invokevirtual #7
// Method com/suemi/network/test/B.get:()Ljava/lang/Integer;
30: pop
31: aload_3
32: invokevirtual #6
// Method com/suemi/network/test/A.get:()Ljava/lang/Object;

ʵ¼ÊÉϵ±ÎÒÃÇʹÓø¸ÀàÒýÓõ÷ÓÃ×ÓÀàµÄgetʱ£¬Ïȵ÷ÓõÄÊÇJVMÉú³ÉµÄÄǸö¸²¸Ç·½·¨£¬ÔÚÇŽӷ½·¨ÔÙµ÷ÓÃ×Ô¼ºÐ´µÄ·½·¨ÊµÏÖ¡£

·ºÐͲÎÊýµÄ¼Ì³Ð¹ØÏµ

ÔÚJavaÖУ¬´ó¼Ò±È½ÏÊìϤµÄÊÇͨ¹ý¼Ì³Ð»úÖÆ¶ø²úÉúµÄÀàÐÍÌåϵ½á¹¹¡£±ÈÈçString¼Ì³Ð×ÔObject¡£¸ù¾ÝLiskovÌæ»»Ô­Ôò£¬×ÓÀàÊÇ¿ÉÒÔÌæ»»¸¸ÀàµÄ¡£µ±ÐèÒªObjectÀàµÄÒýÓõÄʱºò£¬Èç¹û´«ÈëÒ»¸öString¶ÔÏóÊÇûÓÐÈκÎÎÊÌâµÄ¡£µ«ÊÇ·´¹ýÀ´µÄ»°£¬¼´Óø¸ÀàµÄÒýÓÃÌæ»»×ÓÀàÒýÓõÄʱºò£¬¾ÍÐèÒª½øÐÐÇ¿ÖÆÀàÐÍת»»¡£±àÒëÆ÷²¢²»Äܱ£Ö¤ÔËÐÐʱ¿ÌÕâÖÖת»»Ò»¶¨ÊǺϷ¨µÄ¡£ÕâÖÖ×Ô¶¯µÄ×ÓÀàÌæ»»¸¸ÀàµÄÀàÐÍת»»»úÖÆ£¬¶ÔÓÚÊý×éÒ²ÊÇÊÊÓõġ£ String[]¿ÉÒÔÌæ»»Object[]¡£µ«ÊÇ·ºÐ͵ÄÒýÈ룬¶ÔÓÚÕâ¸öÀàÐÍϵͳ²úÉúÁËÒ»¶¨µÄÓ°Ïì¡£ÕýÈçÇ°ÃæÌáµ½µÄList<String>ÊDz»ÄÜÌæ»»µôList<Object>µÄ¡£

ÒýÈë·ºÐÍÖ®ºóµÄÀàÐÍϵͳÔö¼ÓÁËÁ½¸öά¶È£ºÒ»¸öÊÇÀàÐͲÎÊý×ÔÉíµÄ¼Ì³ÐÌåϵ½á¹¹£¬ÁíÍâÒ»¸öÊÇ·ºÐÍÀà»ò½Ó¿Ú×ÔÉíµÄ¼Ì³ÐÌåϵ½á¹¹¡£µÚÒ»¸öÖ¸µÄÊǶÔÓÚ List<String>ºÍList<Object>ÕâÑùµÄÇé¿ö£¬ÀàÐͲÎÊýStringÊǼ̳Ð×ÔObjectµÄ¡£¶øµÚ¶þÖÖÖ¸µÄÊÇ List½Ó¿Ú¼Ì³Ð×ÔCollection½Ó¿Ú¡£¶ÔÓÚÕâ¸öÀàÐÍϵͳ£¬ÓÐÈçϵÄһЩ¹æÔò£º

ÏàͬÀàÐͲÎÊýµÄ·ºÐÍÀàµÄ¹ØÏµÈ¡¾öÓÚ·ºÐÍÀà×ÔÉíµÄ¼Ì³ÐÌåϵ½á¹¹¡£¼´List<String>¿ÉÒÔ¸³¸øCollection<String> ÀàÐ͵ÄÒýÓã¬List<String>¿ÉÒÔÌæ»»Collection<String>¡£ÕâÖÖÇé¿öÒ²ÊÊÓÃÓÚ´øÓÐÉÏϽçµÄÀàÐÍÉùÃ÷¡£ µ±·ºÐÍÀàµÄÀàÐÍÉùÃ÷ÖÐʹÓÃÁËͨÅä·ûµÄʱºò£¬ ÕâÖÖÌæ»»µÄÅжϿÉÒÔÔÚÁ½¸öά¶ÈÉÏ·Ö±ðÕ¹¿ª¡£Èç¶ÔCollection<? extends Number>À´Ëµ£¬ÓÃÀ´Ìæ»»ËûµÄÒýÓÿÉÒÔÔÚCollectionÕâ¸öά¶ÈÉÏÕ¹¿ª£¬¼´List<? extends Number>ºÍSet<? extends Number>µÈ£»Ò²¿ÉÒÔÔÚNumberÕâ¸ö²ã´ÎÉÏÕ¹¿ª£¬¼´Collection<Double>ºÍ Collection<Integer>µÈ¡£Èç´ËÑ­»·ÏÂÈ¥£¬ArrayList<Long>ºÍ HashSet<Double>µÈÒ²¶¼¿ÉÒÔÌæ»»Collection<? extends Number>¡£

Èç¹û·ºÐÍÀàÖаüº¬¶à¸öÀàÐͲÎÊý£¬Ôò¶ÔÓÚÿ¸öÀàÐͲÎÊý·Ö±ðÓ¦ÓÃÉÏÃæµÄ¹æÔò¡£Àí½âÁËÉÏÃæµÄ¹æÔòÖ®ºó£¬¾Í¿ÉÒÔºÜÈÝÒ×µÄÐÞÕýʵÀý·ÖÎöÖиø³öµÄ´úÂëÁË¡£Ö»ÐèÒª°ÑList<Object>¸Ä³ÉList<?>¼´¿É¡£List<String>¿ÉÒÔÌæ»»List<?>µÄ×ÓÀàÐÍ£¬Òò´Ë´«µÝ²ÎÊýʱ²»»á·¢Éú´íÎó¡£

¸öÈËÈÏΪÕâÀï¶ÔÉÏÃæÕâÖÖÇéÐÎʹÓÃ×ÓÀàÐÍÕâÖÖ˵·¨À´ÐÎÈÝÕâÖÖ¹ØÏµÊDz»µ±µÄ£¬ÒòΪList<String>µÈ±¾ÖÊÉÏÀ´Ëµ²»ÄÜËã×÷ÀàÐÍ£¬Ö»ÊǶÔListÀàÐͼÓÉÏÁ˱àÒëÆ÷¼ì²éÔ¼Êø£¬Ò²¾Í²»´æÔÚ×ÓÀàÐÍÕâÖÖ˵·¨¡£Ö»ÄÜÓÃÊÇ·ñÔÚ¸³ÖµÊ±Äܹ»½øÐÐÀàÐÍת»»À´ËµÃ÷¡£

·ºÐÍʹÓÃÖеÄ×¢Òâµã

ÔËÐÐʱÐͱð²éѯ

// ´íÎó£¬ÎªÀàÐͲÁ³ýÖ®ºó£¬ArrayList<String>
ֻʣÏÂԭʼÀàÐÍ£¬·ºÐÍÐÅÏ¢String²»´æÔÚÁË£¬ÎÞ·¨½øÐÐÅжÏ
if( arrayList instanceof ArrayList<String>)

if( arrayList instanceof ArrayList<?>) // ÕýÈ·

Òì³£ÖÐʹÓ÷ºÐ͵ÄÎÊÌâ

²»ÄÜÅ׳öÒ²²»Äܲ¶»ñ·ºÐÍÀàµÄ¶ÔÏó¡£ÊÂʵÉÏ£¬·ºÐÍÀàÀ©Õ¹Throwable¶¼²»ºÏ·¨¡£ÎªÊ²Ã´²»ÄÜÀ©Õ¹Throwable£¬ÒòΪÒì³£¶¼ÊÇÔÚÔËÐÐʱ²¶»ñºÍÅ׳öµÄ£¬¶øÔÚ±àÒëµÄʱºò£¬·ºÐÍÐÅϢȫ¶¼»á±»²Á³ýµô¡£ÀàÐÍÐÅÏ¢±»²Á³ýºó£¬ÄÇô¶à¸öʹÓò»Í¬·ºÐͲÎÊýµØ·½µÄcatch¶¼±äΪԭʼÀàÐÍObject£¬ÄÇôҲ¾ÍÊÇ˵£¬¶à¸öµØ·½µÄcatch±äµÄһģһÑù£¬Õâ×ÔÈ»²»±»ÔÊÐí¡£

²»ÄÜÔÙcatch×Ó¾äÖÐʹÓ÷ºÐͱäÁ¿¡£

public static <T extends Throwable> void doWork(Class<T> t){   
try{
...
}catch(T e){
//±àÒë´íÎó T->Throwable£¬ÏÂÃæµÄÓÀÔ¶²»»á±»²¶»ñ£¬ËùÒÔ²»±»ÔÊÐí
...
}catch(IndexOutOfBounds e){
}
}

²»ÔÊÐí´´½¨·ºÐÍÀàÊý×é

Pair<String,Integer>[] table = new Pair<String,Integer>[10];// ±àÒë´íÎó 
Pair[] table = new Pair[10];// ÎÞ±àÒë´íÎó

ÓÉÓÚÊý×鱨ÐëЯ´ø×Ô¼ºÔªËصÄÀàÐÍÐÅÏ¢£¬ÔÚÀàÐͲÁ³ýÖ®ºó£¬Pair<String,Integer>Êý×é¾Í±ä³ÉÁËPair<Object,Object>Êý×飬Êý×éÖ»ÄÜЯ´øËüµÄÔªËØÊÇPairÕâÑùµÄÐÅÏ¢£¬µ«ÊDz¢²»ÄÜЯ´øÆä·ºÐͲÎÊýÀàÐ͵ÄÐÅÏ¢£¬ËùÒÔÒ²¾ÍÎÞ·¨±£Ö¤table[i]¸³ÖµµÄÀàÐͰ²È«¡£±àÒëÆ÷Ö»ÄܽûÓÃÕâÖÖ²Ù×÷¡£

·ºÐÍÀàÖеľ²Ì¬·½·¨ºÍ¾²Ì¬±äÁ¿

·ºÐÍÀàÖеľ²Ì¬·½·¨ºÍ¾²Ì¬±äÁ¿²»¿ÉÒÔʹÓ÷ºÐÍÀàËùÉùÃ÷µÄ·ºÐÍÀàÐͲÎÊý¡£

public class Test2<T> {     
public static T one; //±àÒë´íÎó
public static T show(T one){ //±àÒë´íÎó
return null;
}
}

ÒòΪ·ºÐÍÀàÖеķºÐͲÎÊýµÄʵÀý»¯ÊÇÔÚ¶¨Òå¶ÔÏóµÄʱºòÖ¸¶¨µÄ£¬¶ø¾²Ì¬±äÁ¿ºÍ¾²Ì¬·½·¨²»ÐèҪʹÓöÔÏóÀ´µ÷Ó᣶ÔÏó¶¼Ã»Óд´½¨£¬ÈçºÎÈ·¶¨Õâ¸ö·ºÐͲÎÊýÊǺÎÖÖÀàÐÍ£¬ËùÒÔµ±È»ÊÇ´íÎóµÄ¡£

ÀàÐͲÁ³ýºóµÄ³åÍ»

class Pair<T>   {   
public boolean equals(T value) {
return null;
}
}

·½·¨Öض¨ÒåÁË£¬Í¬Ê±´æÔÚÁ½¸öequals(Object o)¡£

   
1380 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Java ÖеÄÖÐÎıàÂëÎÊÌâ
Java»ù´¡ÖªÊ¶µÄÈýÊ®¸ö¾­µäÎÊ´ð
Íæ×ª Java Web Ó¦Óÿª·¢
ʹÓÃSpring¸üºÃµØ´¦ÀíStruts
ÓÃEclipse¿ª·¢iPhone WebÓ¦ÓÃ
²å¼þϵͳ¿ò¼Ü·ÖÎö

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

Struts+Spring+Hibernate/EJB+ÐÔÄÜÓÅ»¯
»ªÏÄ»ù½ð ActiveMQ Ô­ÀíÓë¹ÜÀí
ijÃñº½¹«Ë¾ Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢
ij·çµç¹«Ë¾ Java Ó¦Óÿª·¢Æ½Ì¨ÓëÇ¨ÒÆ
ÈÕÕÕ¸Û J2EEÓ¦Óÿª·¢¼¼Êõ¿ò¼ÜÓëʵ¼ù
ij¿ç¹ú¹«Ë¾ ¹¤×÷Á÷¹ÜÀíJBPM
¶«·½º½¿Õ¹«Ë¾ ¸ß¼¶J2EE¼°ÆäÇ°ÑØ¼¼Êõ