import java.util.List;
public class NumericSum {
public static <T extends Number> double sumOfList(List<T> list) {
double sum = 0.0;
for (T element : list) {
sum += element.doubleValue();
}
return sum;
}
public static void main(String[] args) {
List<Integer> integerList = List.of(1, 2, 3, 4, 5);
List<Double> doubleList = List.of(1.1, 2.2, 3.3, 4.4, 5.5);
double sumOfIntegers = sumOfList(integerList);
double sumOfDoubles = sumOfList(doubleList);
System.out.println("Sum of integers: " + sumOfIntegers);
System.out.println("Sum of doubles: " + sumOfDoubles);
}
}
ã“ã®ä¾‹ã§ã¯ã€sumOfList メソッドãŒã‚¸ã‚§ãƒãƒªã‚¯ã‚¹åž‹ãƒ‘ラメータ T を数値型ã«åˆ¶ç´„ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€Number クラスã®ãƒ¡ã‚½ãƒƒãƒ‰ doubleValue() を使用ã—ã¦å„è¦ç´ ã‚’ double åž‹ã«å¤‰æ›ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆã‚„ダブル型ã®ãƒªã‚¹ãƒˆãªã©ã€æ§˜ã€…ãªæ•°å€¤åž‹ã®ãƒªã‚¹ãƒˆã«å¯¾å¿œã§ãã¾ã™ã€‚
ワイルドカードã®ä¸Šé™
ワイルドカードã®ä¸Šé™ï¼ˆUpper Bounded Wildcard)ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã«ãŠã„ã¦ç‰¹å®šã®åž‹ã®ã‚µãƒ–タイプã«åˆ¶é™ã‚’ã‹ã‘ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚ワイルドカードã®ä¸Šé™ã¯ extends ã‚ーワードを使用ã—ã¦æŒ‡å®šã—ã¾ã™ã€‚具体的ãªã‚¯ãƒ©ã‚¹ã¾ãŸã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã®åž‹ã®ä¸Šé™ã‚’指定ã™ã‚‹ã“ã¨ã§ã€ãã®åž‹ãŠã‚ˆã³ãã®ã‚µãƒ–タイプã®ã¿ãŒãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã«é©ç”¨å¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚
例ãˆã°ã€ä»¥ä¸‹ã¯ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ä¸Šé™ã‚’使用ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã®ä¾‹ã§ã™ã€‚
import java.util.List;
public class UpperBoundedWildcard {
// ワイルドカードã®ä¸Šé™ã‚’使用ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰
public static double sumOfList(List<? extends Number> list) {
double sum = 0.0;
for (Number number : list) {
sum += number.doubleValue();
}
return sum;
}
public static void main(String[] args) {
List<Integer> integerList = List.of(1, 2, 3, 4, 5);
List<Double> doubleList = List.of(1.1, 2.2, 3.3, 4.4, 5.5);
// ワイルドカードã®ä¸Šé™ã‚’使用ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—
double sumOfIntegers = sumOfList(integerList);
double sumOfDoubles = sumOfList(doubleList);
System.out.println("Sum of integers: " + sumOfIntegers);
System.out.println("Sum of doubles: " + sumOfDoubles);
}
}
ã“ã®ä¾‹ã§ã¯ã€List<? extends Number> を使用ã—ã¦ã€Number クラスを継承ã™ã‚‹ã©ã®åž‹ã§ã‚‚引数ã¨ã—ã¦å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã‚‹ sumOfList メソッドãŒã‚りã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Integer ã‚„ Double ãªã©ã® Number クラスã®ã‚µãƒ–タイプをå«ã‚€ãƒªã‚¹ãƒˆãŒæ¸¡ã•れるã“ã¨ãŒã§ãã¾ã™ã€‚
ワイルドカードã®ä¸Šé™ã‚’利用ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚ŠæŸ”軟ã‹ã¤æ±Žç”¨æ€§ã®é«˜ã„ジェãƒãƒªã‚¯ã‚¹ã®ä½¿ç”¨ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚上é™ã‚’指定ã™ã‚‹ã“ã¨ã§ã€ç‰¹å®šã®åž‹ãŠã‚ˆã³ãã®ã‚µãƒ–タイプをå—ã‘入れるメソッドやクラスをè¨è¨ˆã™ã‚‹ã“ã¨ãŒã§ãã€ã“れã«ã‚ˆã‚Šã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚ã¾ãŸã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚„クラスãŒç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦ã‚‚動作ã™ã‚‹ã‚ˆã†ã«ãªã‚Šã€ã‚ˆã‚Šæ‹¡å¼µå¯èƒ½ãªã‚³ãƒ¼ãƒ‰ã‚’書ãã“ã¨ãŒã§ãã¾ã™ã€‚
ワイルドカードã®ä¸Šé™ã‚’使用ã™ã‚‹éš›ã«ã¯ã€ã‚³ãƒ¼ãƒ‰ã®æŸ”軟性をä¿ã¡ã¤ã¤åž‹å®‰å…¨æ€§ã‚’確ä¿ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚特定ã®åž‹ã«ä¾å˜ã™ã‚‹éƒ¨åˆ†ã¨ã€ã‚ˆã‚Šä¸€èˆ¬çš„ãªæ“作をæä¾›ã™ã‚‹éƒ¨åˆ†ã¨ã‚’ã†ã¾ããƒãƒ©ãƒ³ã‚¹ã•ã›ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¼ãƒ‰ã®ä¿å®ˆæ€§ã‚„å¯èªæ€§ã‚’高ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ã®ä¸Šé™ã‚’ç†è§£ã—ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚Šå®‰å…¨ã§åŠ¹çŽ‡çš„ãªãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ãŒå¯èƒ½ã§ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント