import java.util.List;
public class NumberPrinter {
// ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ printNumbers を定義
public static <T extends Number> void printNumbers(List<T> numbers) {
for (T number : numbers) {
System.out.println(number);
}
}
public static void main(String[] args) {
// æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆã‚’作æˆã—ã¦è¡¨ç¤º
List<Integer> integerList = List.of(1, 2, 3, 4, 5);
System.out.println("Integer List:");
printNumbers(integerList);
// ダブル型ã®ãƒªã‚¹ãƒˆã‚’作æˆã—ã¦è¡¨ç¤º
List<Double> doubleList = List.of(1.1, 2.2, 3.3, 4.4, 5.5);
System.out.println("\nDouble List:");
printNumbers(doubleList);
// ä»»æ„ã®æ•°å€¤åž‹ã®ã‚µãƒ–タイプã®ãƒªã‚¹ãƒˆã‚’作æˆã—ã¦è¡¨ç¤º
List<Float> floatList = List.of(1.0f, 2.5f, 3.7f, 4.2f, 5.8f);
System.out.println("\nFloat List:");
printNumbers(floatList);
}
}
ã“ã®ä¾‹ã§ã¯ã€printNumbers メソッドãŒã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦å®Ÿè£…ã•れã¦ã„ã¾ã™ã€‚ã“れを使用ã—ã¦ã€æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆã€ãƒ€ãƒ–ル型ã®ãƒªã‚¹ãƒˆã€ãŠã‚ˆã³æµ®å‹•å°æ•°ç‚¹æ•°åž‹ã®ãƒªã‚¹ãƒˆã‚’表示ã—ã¦ã„ã¾ã™ã€‚<T extends Number> ã®ã‚ˆã†ã«åž‹åˆ¶ç´„ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã§ã€æ•°å€¤åž‹ã®ã‚µãƒ–タイプをå—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚
ワイルドカードã®ä¸‹é™
ワイルドカードã®ä¸‹é™ (<? super T>) ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã«ãŠã„ã¦ãƒ¡ã‚½ãƒƒãƒ‰ã‚„クラスãŒç‰¹å®šã®åž‹ T ã¾ãŸã¯ãã®ã‚¹ãƒ¼ãƒ‘ータイプをå—ã‘å…¥ã‚Œã‚‹å ´åˆã«ä½¿ç”¨ã•れã¾ã™ã€‚ワイルドカードã®ä¸‹é™ã‚’使ã†ã“ã¨ã§ã€ã‚ˆã‚Šåºƒã„範囲ã®åž‹ã‚’å—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚
例ãˆã°ã€List<? super Integer> 㯠Integer ã¾ãŸã¯ Integer ã®ã‚¹ãƒ¼ãƒ‘ータイプã®ãƒªã‚¹ãƒˆã‚’表ã—ã¾ã™ã€‚ã“ã®å ´åˆã€ãƒªã‚¹ãƒˆã«ã¯ Integer 自体やãã®è¦ªã§ã‚ã‚‹ Numberã€Object ã®ã„ãšã‚Œã‹ãŒæ ¼ç´ã•れã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
以下ã¯ã€ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ä¸‹é™ã‚’使用ã—ãŸä¾‹ã§ã™ã€‚ã“れã¯ã€æ•´æ•°åž‹ã®è¦ç´ ã‚’æŒã¤ãƒªã‚¹ãƒˆã«æ–°ã—ã„æ•´æ•°ã‚’è¿½åŠ ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ã€‚
import java.util.List;
public class LowerBoundedWildcardExample {
public static void addInteger(List<? super Integer> list, Integer value) {
list.add(value);
}
public static void main(String[] args) {
// Integeråž‹ã®ãƒªã‚¹ãƒˆ
List<Integer> integerList = List.of(1, 2, 3);
// Numberåž‹ã®ãƒªã‚¹ãƒˆã«Integerを追åŠ
List<Number> numberList = List.of(4.0, 5.0, 6.0);
// Objectåž‹ã®ãƒªã‚¹ãƒˆã«Integerを追åŠ
List<Object> objectList = List.of("seven", "eight", "nine");
// メソッドを使用ã—ã¦è¦ç´ を追åŠ
addInteger(integerList, 4);
addInteger(numberList, 7);
addInteger(objectList, 10);
// çµæžœã‚’表示
System.out.println("Integer List: " + integerList);
System.out.println("Number List: " + numberList);
System.out.println("Object List: " + objectList);
}
}
ã“ã®ä¾‹ã§ã¯ã€addInteger メソッド㌠List<? super Integer> を引数ã¨ã—ã¦å–りã€Integer ã‚’ãã®ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€integerListã€numberListã€objectList ã«å¯¾ã—ã¦ã€ç•°ãªã‚‹ä¸Šä½åž‹ã®ãƒªã‚¹ãƒˆã«æ•´æ•°ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ワイルドカードã®ä¸‹é™ (<? super T>) ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã«ãŠã„ã¦æŸ”軟性をæä¾›ã—ã€ã‚ˆã‚Šä¸€èˆ¬çš„ãªåž‹ã®åˆ©ç”¨ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ç•°ãªã‚‹åž‹ã®éšŽå±¤æ§‹é€ ã‚’æŒã¤è¦ç´ ã‚’æ“作ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚„クラスをより汎用的ã«ä½œæˆã§ãã¾ã™ã€‚ワイルドカードã®ä¸‹é™ã‚’使用ã™ã‚‹éš›ã¯ã€åž‹å®‰å…¨æ€§ã¨æŸ”軟性ã®ãƒãƒ©ãƒ³ã‚¹ã‚’考慮ã—ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
ä¸Šé™ (<? extends T>) ã¨åŒæ§˜ã«ã€ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ä¸‹é™ã‚‚ジェãƒãƒªã‚¯ã‚¹ã®å¼·åŠ›ãªæ©Ÿèƒ½ã§ã‚りã€ãƒ¡ã‚½ãƒƒãƒ‰ã®ãƒ‘ラメータやクラスã®ãƒ•ィールドã«ãŠã„ã¦ç•°ãªã‚‹åž‹ã¸ã®å¯¾å¿œãŒæ±‚ã‚ã‚‰ã‚Œã‚‹å ´é¢ã§æœ‰ç”¨ã§ã™ã€‚コードã®å¯èªæ€§ã‚„å†åˆ©ç”¨æ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«ã€ä¸Šæ‰‹ã«æ´»ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント