import java.util.Collection;
public class GenericExample {
// ワイルドカードを使用ã—ãŸã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰
public static void printElements(Collection<?> collection) {
for (Object element : collection) {
System.out.println(element);
}
}
public static void main(String[] args) {
// æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆ
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
// æ–‡å—列型ã®ãƒªã‚¹ãƒˆ
List<String> stringList = new ArrayList<>();
stringList.add("One");
stringList.add("Two");
stringList.add("Three");
// ä»»æ„ã®åž‹ã®ã‚»ãƒƒãƒˆ
Set<Double> doubleSet = new HashSet<>();
doubleSet.add(1.1);
doubleSet.add(2.2);
doubleSet.add(3.3);
// ワイルドカードを使用ã—ãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¦è¦ç´ を出力
printElements(integerList);
printElements(stringList);
printElements(doubleSet);
}
}
ã“ã®ä¾‹ã§ã¯ã€printElements メソッドãŒãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’使用ã—ã¦ä»»æ„ã®ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’å—ã‘å–りã€è¦ç´ ã‚’é †ç•ªã«å‡ºåŠ›ã—ã¾ã™ã€‚main メソッドã§ã¯ã€æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆã€æ–‡å—列型ã®ãƒªã‚¹ãƒˆã€ãŠã‚ˆã³ä»»æ„ã®åž‹ã®ã‚»ãƒƒãƒˆã®è¦ç´ ã‚’ printElements メソッドを使用ã—ã¦ãれãžã‚Œå‡ºåŠ›ã—ã¦ã„ã¾ã™ã€‚
ワイルドカード
ワイルドカード(Wildcards)ã¯ã€Javaã«ãŠã„ã¦ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹éš›ã«ã€åž‹ã®æŸ”軟性をæä¾›ã™ã‚‹ãŸã‚ã®ç‰¹æ®Šãªæ©Ÿèƒ½ã§ã™ã€‚主ã«3ã¤ã®ç¨®é¡žãŒã‚りã¾ã™ï¼šã€ã€ã€‚
<?>(éžå¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ï¼‰:
未知ã®åž‹ã«ãƒžãƒƒãƒã—ã¾ã™ã€‚
例ãˆã°ã€Listã¯ã©ã‚“ãªåž‹ã®è¦ç´ ã§ã‚‚å—ã‘入れるã“ã¨ãŒã§ãã¾ã™ã€‚
メソッドã®å¼•æ•°ã«ä½¿ã‚れるã“ã¨ãŒã‚りã€ä»»æ„ã®åž‹ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’å—ã‘入れる柔軟性をæä¾›ã—ã¾ã™ã€‚
public static void printElements(Collection<?> collection) {
for (Object element : collection) {
System.out.println(element);
}
}
<? extends T>(上é™å¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ï¼‰:
T ã¾ãŸã¯ T ã®ã‚µãƒ–クラスã«ãƒžãƒƒãƒã—ã¾ã™ã€‚
例ãˆã°ã€Listã¯Numberã¾ãŸã¯ãã®ã‚µãƒ–クラスã®è¦ç´ ã‚’å—ã‘入れã¾ã™ã€‚
èªã¿å–り専用ã®å ´åˆã«ä½¿ç”¨ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚
public static double sum(List<? extends Number> numbers) {
double total = 0.0;
for (Number number : numbers) {
total += number.doubleValue();
}
return total;
}
<? super T>(下é™å¢ƒç•Œãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ï¼‰:
T ã¾ãŸã¯ T ã®ã‚¹ãƒ¼ãƒ‘ークラスã«ãƒžãƒƒãƒã—ã¾ã™ã€‚
例ãˆã°ã€Listã¯Integerã¾ãŸã¯ãã®ã‚¹ãƒ¼ãƒ‘ークラスã®è¦ç´ ã‚’å—ã‘入れã¾ã™ã€‚
書ãè¾¼ã¿å°‚用ã®å ´åˆã«ä½¿ç”¨ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚
public static void addNumbers(List<? super Integer> numbers) {
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
ワイルドカードを使用ã™ã‚‹ã“ã¨ã§ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã®ã‚³ãƒ¼ãƒ‰ãŒã‚ˆã‚ŠæŸ”軟ã«ãªã‚Šã€ç•°ãªã‚‹åž‹ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ã§æ‰±ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント