public class GenericExample {
// 1. ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ printElements ã®å®£è¨€
public static <T> void printElements(List<T> list) {
// リストã®è¦ç´ ã‚’é †ç•ªã«è¡¨ç¤º
for (T element : list) {
System.out.println(element);
}
}
public static void main(String[] args) {
// 2. printElements メソッドを使用ã—ã¦è¦ç´ を表示
// æ–‡å—列型ã®ãƒªã‚¹ãƒˆ
List<String> stringList = Arrays.asList("Apple", "Banana", "Orange");
System.out.println("String List:");
printElements(stringList);
// æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆ
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5);
System.out.println("\nInteger List:");
printElements(integerList);
// ä»»æ„ã®åž‹ã®ãƒªã‚¹ãƒˆã‚‚表示å¯èƒ½
List<Double> doubleList = Arrays.asList(1.5, 2.5, 3.5);
System.out.println("\nDouble List:");
printElements(doubleList);
}
}
ã“ã®ä¾‹ã§ã¯ã€printElements メソッドãŒä»»æ„ã®åž‹ã®ãƒªã‚¹ãƒˆã‚’å—ã‘å–りã€ãã®è¦ç´ ã‚’é †ç•ªã«è¡¨ç¤ºã™ã‚‹å½¹å‰²ã‚’æžœãŸã—ã¦ã„ã¾ã™ã€‚<T> ã¯ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’表ã—ã€List<T> ã¯ä»»æ„ã®åž‹ T ã®ãƒªã‚¹ãƒˆã‚’指定ã—ã¦ã„ã¾ã™ã€‚printElements ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§æ‹¡å¼µfor文を使用ã—ã¦ã€ãƒªã‚¹ãƒˆã®è¦ç´ ã‚’é †ç•ªã«è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚ main メソッドã§ã¯ã€ç•°ãªã‚‹åž‹ã®ãƒªã‚¹ãƒˆã‚’作æˆã—㦠printElements メソッドを呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚
ワイルドカードã®éžå¢ƒç•Œ
ワイルドカードã«ã¯ã€å¢ƒç•ŒãŒãªã„ワイルドカード(unbounded wildcard)ãŒã‚りã¾ã™ã€‚ã“れã¯ã€<?> ã¨è¡¨ã•れã€ã‚らゆる型ã®ã‚ªãƒ–ジェクトをå—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚以下ã«ã€ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®éžå¢ƒç•Œã®ä½¿ç”¨ä¾‹ã¨è§£èª¬ã‚’示ã—ã¾ã™ã€‚
ワイルドカードã®éžå¢ƒç•Œã®ä½¿ç”¨ä¾‹
import java.util.ArrayList;
import java.util.List;
public class WildcardExample {
// 1. ワイルドカードã®éžå¢ƒç•Œã‚’使用ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰
public static void printElements(List<?> list) {
for (Object element : list) {
System.out.println(element);
}
}
public static void main(String[] args) {
// 2. ワイルドカードã®éžå¢ƒç•Œã‚’使用ã—ã¦è¦ç´ を表示
// æ–‡å—列型ã®ãƒªã‚¹ãƒˆ
List<String> stringList = new ArrayList<>();
stringList.add("Apple");
stringList.add("Banana");
stringList.add("Orange");
System.out.println("String List:");
printElements(stringList);
// æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆ
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
System.out.println("\nInteger List:");
printElements(integerList);
}
}
解説
printElementsメソッドã§ã¯ã€ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®éžå¢ƒç•ŒList<?>を使用ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã©ã®åž‹ã®ãƒªã‚¹ãƒˆã§ã‚‚å—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚mainメソッドã§ã¯ã€æ–‡å—列型ã®ãƒªã‚¹ãƒˆã¨æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆã‚’作æˆã—ã€ãれãžã‚ŒprintElementsãƒ¡ã‚½ãƒƒãƒ‰ã«æ¸¡ã—ã¦ã„ã¾ã™ã€‚ワイルドカードãŒéžå¢ƒç•Œã§ã‚ã‚‹ãŸã‚ã€ç•°ãªã‚‹åž‹ã®ãƒªã‚¹ãƒˆã‚’åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ã«æ¸¡ã™ã“ã¨ãŒã§ãã¾ã™ã€‚
ワイルドカードã®éžå¢ƒç•Œã¯ã€Javaã«ãŠã„ã¦æŸ”軟性ã¨å†åˆ©ç”¨æ€§ã‚’æä¾›ã™ã‚‹é‡è¦ãªæ¦‚念ã§ã™ã€‚ã“ã®æ¦‚念をç†è§£ã™ã‚‹ã“ã¨ã§ã€ç•°ãªã‚‹åž‹ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚„ジェãƒãƒªã‚¯ã‚¹åž‹ã‚’扱ã†éš›ã«ã€ã‚ˆã‚Šæ±Žç”¨çš„ã§æ‹¡å¼µå¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã‚’記述ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
éžå¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ (<?>) を使用ã™ã‚‹ã“ã¨ã§ã€ç‰¹å®šã®åž‹ã«ä¾å˜ã—ãªã„メソッドやクラスを実装ã§ãã€ãã®çµæžœã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚ç•°ãªã‚‹åž‹ã‚’扱ã†å ´é¢ã§ã€åž‹ã«é–¢ã™ã‚‹æŸ”è»Ÿæ€§ãŒæ±‚ã‚られる際ã«ã¯ã€éžå¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ãŒéžå¸¸ã«å½¹ç«‹ã¡ã¾ã™ã€‚
ãŸã ã—ã€æ³¨æ„ãŒå¿…è¦ã§ã‚りã€éžå¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹ã“ã¨ã§åž‹å®‰å…¨æ€§ãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€ã‚³ãƒ¼ãƒ‰ã‚’æ…Žé‡ã«è¨è¨ˆã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚状æ³ã«ã‚ˆã£ã¦ã¯ã€å¢ƒç•Œä»˜ãワイルドカードや具象型ã®ä½¿ç”¨ãŒé©åˆ‡ãªå ´åˆã‚‚ã‚りã¾ã™ã€‚
ワイルドカードã®ç†è§£ã¨é©åˆ‡ãªä½¿ç”¨ã¯ã€Javaプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦æ´—ç·´ã•れãŸã‚³ãƒ¼ãƒ‰ã‚’書ããŸã‚ã®ä¸€ç’°ã¨ãªã‚Šã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント