ジェネリックアレイリストを作成し、getメソッドで問題が発生しているim。インデックスパラメータを検証していますが、入力されたパラメータが範囲外の場合にはgetメソッドを使用しないようにしてください。だから、誰かがインデックス20だけで10個のインデックスしかない場合、エラーメッセージを表示して次のコードを実行すると、インデックス20に値を取得するよう求められます。 今すぐエラーメッセージが表示され、引き続きgetメソッドを使用しようとします。getメソッド(Java)でジェネリック配列リストの問題
public class GenericList<X> {
// Use an array to create the list
private X arr[];
private int size;
//Constructor for objects of class GSL
public GenericList(){
this.newArray();
}
// Create a new array
private void newArray(){
arr = (X[]) new Object[10];
size = 0;
}
// Expand array
private void expandArray(){
X[] arr2;
arr2 = (X[]) new Object[(int)(arr.length * 1.2)];
//Copy elements from arr to arr2
for (int i = 0; i < arr.length; i++)
arr2[i] = arr[i];
//Have arr point to new array
arr = arr2;
}
//Return the size of the list
public int size(){
return size;
}
// Add a value to the list
public void add(X value){
if (size == arr.length){
this.expandArray();
}
arr[size] = value;
size++;
}
// Get the value at the specified location in the list
public X get(int index){
if (index < 0 || index >= size)
System.out.println("Index out of bounds");
return arr[index];
}
私は、このテストコード実行した場合、基本的に:
GenericList<Integer> arr = new GenericList();
list.add(27);
list.get(100);
list.get(0);
をそれはそれはlist.getでエラーを停止し、私を与えるだろう、最初のインデックスに27を追加し、配列を作成します(100 )。 私は、そのテストでエラーをスローし、それをスキップしてlist.get(0)を実行しようとしています。
、とで示している:あなたは
list.get(100);
がエラーをスローした場合に停止しないようにテストコードをしたいですあなたのコードはその行を引き起こします。 –インデックスが範囲外の場合は、例外をスローする必要があります。あなたのコードはこれをしません。スレッドで –
例外「メイン」でjava.lang.Error:未解決のコンパイルの問題:もちろん GenericList.get(GenericList.java:52)で \t – PFKrang