å¢çã¯ã¤ã«ãã«ã¼ãã¨ä»£å ¥äºææ§
åãã©ã¡ã¼ã¿ã®ãå¢çã¯ã¤ã«ãã«ã¼ããã使ç¨ããã¨ãæ¡ä»¶ãæºããåãã©ã¡ã¼ã¿ãæã¤ãªãã¸ã§ã¯ãã代å
¥å¯è½ãªå¤æ°ãä½ã£ããã§ãã¾ãããå¢çã¯ã¤ã«ãã«ã¼ããæã¤åãåãã©ã¡ã¼ã¿å
ã§ä½¿ãã¨ãã¯ã代å
¥äºææ§ã¯å¤±ããã¦ãã¾ãã¾ãã
// åãã©ã¡ã¼ã¿æå®ä»ãã®Listå士ã¯ããã¨ããã©ã¡ã¼ã¿ã®åã«ä»£å ¥äºææ§ããã£ã¦ã // ä»£å ¥äºææ§ã¯ãªãã(ãGenericsã¯å ±å¤ã§ãªããã¨ããããããã) List<String> strs = null; List<Object> objects = null; //objects = strs; // ã³ã³ãã¤ã«ã¨ã©ã¼ // ããã¯ãã¡ããOK Object obj = null; String str = null; obj = str; // OK // åæ§ã«ãåãã©ã¡ã¼ã¿ã®å¢çã¯ã¤ã«ãã«ã¼ãã使ç¨ããå ´åãã // ç´ ã§ã¯ä»£å ¥äºææ§ããã£ã¦ãã // åãã©ã¡ã¼ã¿ã¨ãã¦ä½¿ãã¨ãä»£å ¥ã§ããªããªã£ã¦ãã¾ãã Class<String> class1 = null; Class<?> class2 = null; class2 = class1; // OK List<Class<String>> classList = null; List<Class<?>> classList2 = null; // classList = classList2; ã³ã³ãã¤ã«ã¨ã©ã¼
âã¿ãããªé¢æ°ããã£ã¦ã
// ä»»æã®ã¯ã©ã¹ã®ãªã¹ããåãåãé¢æ° static final void test( List<Class<?>> list ) {}
âã®ããã«å¼ã³åºããã¨ãã¦ãä»æ¥ããã°ããã¯ã¾ã£ã¦ãã¾ã£ãã»ã»orzã
List<Class<String>> array = null; // çç¥ test( array ); // ã³ã³ãã¤ã«ã¨ã©ã¼
ãã®å ´åã以ä¸ãæ£è§£ã
// ä»»æã®ã¯ã©ã¹ã®ãªã¹ããåãåãé¢æ° static final void test( List<? extends Class<?>> list ) {}