以下のコードの出力結果が次のようになることを目指します。
Yaris/1500
Corolla/2500
Bear1/1000
Bear2/2000
Tacoma/3300
Bear3/1200
このコードには、ToyBoxTestの中のshowToysinBoxの中でエラーが起こっています。以下エラー文です。
ToyBoxTest.java:33: エラー: 不適合な型: CAP#1をToyに変換できません:
Toy o = v.get(i);
^
CAP#1が新しい型変数の場合:
CAP#1は? extends ObjectのキャプチャからObjectを拡張します
ToyBoxTest.java:34: エラー: シンボルを見つけられません
System.out.println(o.print_name());
^
シンボル: メソッド print_name()
場所: タイプToyの変数 o
エラーの直し方を教えて下さい。
java
1import java.util.ArrayList; 2 3/** 4 * ToyBox Example. 5 */ 6 7class ToyBox<T> { 8 9 private ArrayList<T> v = new ArrayList<T>(); 10 11 public void add(T t) { 12 // Complete add method with proper argument and method body 13 v.add(t); 14 } 15 16 public T get(int i) { 17 // Complete get method with proper argument and method body 18 return v.get(i); 19 } 20 21 public int getSize() { 22 // Complete getSize method with proper argument and method body 23 return v.size(); 24 } 25} 26 27public class ToyBoxTest { 28 public static void showToysinBox(ToyBox<? extends Object> v) { 29 /* Parameter with bounded wildcard to accept Toy and its subclasses*/ 30 // Complete showAnimalsinToyBox method with proper argument and method body 31 int i; 32 for(i=0; i<v.getSize() ;i++){ 33 Toy o = v.get(i); 34 System.out.println(o.print_name()); 35 } 36 } 37 38 public static void main(String[] args) { 39 40 // Create a "carBox" with proper sentence 41 ToyBox<Object> carBox = new ToyBox<Object>(); 42 Car t1 = new Car("Yaris", 1500); 43 Car t2 = new Car("Corolla", 2500); 44 carBox.add(t1); 45 carBox.add(t2); 46 showToysinBox(carBox); 47 48 // Create a "bearBox" with proper sentence 49 ToyBox<Object> bearBox = new ToyBox<Object>(); 50 Bear b1 = new Bear("Bear1", 1000); 51 Bear b2 = new Bear("Bear2", 2000); 52 bearBox.add(b1); 53 bearBox.add(b2); 54 showToysinBox(bearBox); 55 56 57 /* It is OK till now */ 58 59 // Next, create Box<Toy> 60 61 // Create a "toyBox" with proper sentence 62 ToyBox<Object> toyBox = new ToyBox<Object>(); 63 Car t3 = new Car("Tacoma", 3300); 64 Bear b3 = new Bear("Bear3", 1200); 65 toyBox.add(t3); 66 toyBox.add(b3); 67 showToysinBox(toyBox); 68 } 69} 70 71abstract class Toy { 72 // Complete Toy Class 73 public String toyName; 74 public int toySize; 75} 76 77class Car extends Toy{ 78 public Car(String name, int size){ 79 super.toyName = name; 80 super.toySize = size; 81 } 82 83 public String print_name(){ 84 return super.toyName+"/"+super.toySize; 85 } 86} 87 88class Bear extends Toy{ 89 public Bear(String name, int size){ 90 super.toyName = name; 91 super.toySize = size; 92 } 93 94 public String print_name(){ 95 return super.toyName+"/"+super.toySize; 96 } 97 98}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。