次の行を含むコードに取り組んでいます。
public static int[] toArray(List<Integer> list) {
int[] array = new int[list.size()];
for(int i = 0; i < array.length; i++)
array[i] = list.get(i);
return array;
}
public static double[] toArray(List<Double> list) {
double[] array = new double[list.size()];
for(int i = 0; i < array.length; i++)
array[i] = list.get(i);
return array;
}
public static String[] toArray(List<String> list) {
String[] data = new String[list.size()];
for(int i = 0; i < data.length; i++)
data[i] = list.get(i);
return data;
コンパイル中に次のエラーが発生します。
error: name clash: toArray(List<Double>) and toArray(List<Integer>) have the same erasure
public static double[] toArray(List<Double> list) {
^
error: name clash: toArray(List<String>) and toArray(List<Integer>) have the same erasure
public static String[] toArray(List<String> list) {
^
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
このプログラムは、私が最近ダウンロードしたオープン ソース プログラム (そして少し古い 2006 年) です。パッケージには、バイナリ バージョンとソース コードの両方が含まれています。これは、このコードが正しくコンパイルされたことを意味しますが、今はコンパイルできません。
今、私は2つの質問があります:
- この過負荷の何が問題になっていますか?
- この問題を解決するにはどうすればよいですか? これらの関数をテンプレートに基づく関数だけに置き換えてもよろしいですか? もしそうなら、どのように?
ありがとう