1. ジェãƒãƒªã‚¯ã‚¹ã‚¯ãƒ©ã‚¹ Box ã®ä¾‹:
class Box<T> {
private T element;
public Box() {
this.element = null;
}
public void setElement(T element) {
this.element = element;
}
public T getElement() {
return element;
}
}
public class Main {
public static void main(String[] args) {
// 整数型㮠Box インスタンス作æˆ
Box<Integer> intBox = new Box<>();
intBox.setElement(42);
System.out.println("æ•´æ•°åž‹ã®è¦ç´ : " + intBox.getElement());
// æ–‡å—列型㮠Box インスタンス作æˆ
Box<String> strBox = new Box<>();
strBox.setElement("Hello, Generics!");
System.out.println("æ–‡å—列型ã®è¦ç´ : " + strBox.getElement());
// ダブル型㮠Box インスタンス作æˆ
Box<Double> doubleBox = new Box<>();
doubleBox.setElement(3.14);
System.out.println("ダブル型ã®è¦ç´ : " + doubleBox.getElement());
}
}
ã“ã®ä¾‹ã§ã¯ã€Box クラスを使用ã—ã¦ç•°ãªã‚‹åž‹ã®è¦ç´ ã‚’æ ¼ç´ã—ã¦ã„ã¾ã™ã€‚ãれãžã‚Œã® Box インスタンスã«å¯¾ã—ã¦ã€setElement メソッドã§è¦ç´ ã‚’æ ¼ç´ã—ã€getElement メソッドã§è¦ç´ ã‚’å–å¾—ã—ã¦ã„ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã®åŸºæœ¬
ジェãƒãƒªã‚¯ã‚¹ã¯ã€Javaã§ç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿åž‹ã«å¯¾ã—ã¦åŒã˜ã‚³ãƒ¼ãƒ‰ã‚’使ã„回ã™ãŸã‚ã®ä»•組ã¿ã§ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€åž‹å®‰å…¨æ€§ãŒå‘上ã—ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒé«˜ã¾ã‚Šã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã®åŸºæœ¬çš„ãªæ¦‚念:
ジェãƒãƒªã‚¯ã‚¹ã‚¯ãƒ©ã‚¹ã®å®šç¾©:
public class Box<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
Box クラスã¯ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã§ã€ ã¯åž‹ãƒ‘ラメータを表ã—ã¾ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã©ã‚“ãªåž‹ã®å€¤ã§ã‚‚扱ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã®å®šç¾©:
public <T> T genericMethod(T input) {
// メソッドã®ä¸ã§ T åž‹ã®å‡¦ç†ã‚’行ã†
return input;
}
メソッドãŒã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã§ã‚ã‚‹å ´åˆã€æˆ»ã‚Šå€¤ã®åž‹ã‚„引数ã®åž‹ã«ã‚‚型パラメータを使用ã§ãã¾ã™ã€‚
型パラメータã®å®Ÿéš›ã®åž‹ã®æŒ‡å®š:
Box<Integer> integerBox = new Box<>();
integerBox.setValue(42);
Integer value = integerBox.getValue();
Box クラスを使用ã™ã‚‹éš›ã«ã€åž‹ãƒ‘ラメータã«å®Ÿéš›ã®åž‹ï¼ˆã“ã“ã§ã¯ Integer)を指定ã—ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ã®åˆ©ç‚¹:
- 型安全性: ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ³ãƒ‘イル時ã«åž‹ã‚¨ãƒ©ãƒ¼ã‚’検出ã§ãã¾ã™ã€‚実行時エラーを減少ã•ã›ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®å®‰å®šæ€§ã‚’å‘上ã•ã›ã¾ã™ã€‚
- コードã®å†åˆ©ç”¨æ€§: åŒã˜ã‚³ãƒ¼ãƒ‰ã‚’ç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿åž‹ã§ä½¿ç”¨ã§ãã‚‹ãŸã‚ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒé«˜ã¾ã‚Šã¾ã™ã€‚
- å¯èªæ€§: ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚„クラスã®ç›®çš„ãŒã‚ˆã‚Šæ˜Žç¢ºã«ãªã‚Šã¾ã™ã€‚åž‹ã«é–¢ã™ã‚‹æƒ…å ±ãŒç›´æŽ¥ã‚³ãƒ¼ãƒ‰ã«ç¾ã‚Œã‚‹ãŸã‚ã€å¯èªæ€§ãŒå‘上ã—ã¾ã™ã€‚
例ãˆã°ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãƒ•レームワーク(List, Set, Map ãªã©ï¼‰ã¯ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’活用ã—ã¦ãŠã‚Šã€ç•°ãªã‚‹åž‹ã®è¦ç´ ã‚’æ ¼ç´ã§ãる一方ã§åž‹å®‰å…¨æ€§ã‚’ä¿ã£ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒžã¯ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使用ã™ã‚‹éš›ã«åž‹ã‚ャストãªã©ã‚’行ã†å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント