...なぜ私のリストで指定されていないタイプのリストを返すことができます<T>戻り値の型?
package whoop.deduper;
/**
* @author deduper
*
*/
public class Foo {
}
package whoop.deduper;
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.List;
/**
* @author deduper
*
*/
public class FuBar {
public int fuBar(){
Bar bar = new Bar();
List<Foo> foos = bar.foos();
int baz = 0;
for (Iterator iterator = foos.iterator(); iterator.hasNext();) {
BigDecimal foo = (BigDecimal) iterator.next();
baz = foo.intValue();
return baz;
}
return baz;
}
}
package whoop.deduper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author deduper
*
*/
public class Bar {
public <T extends Foo> List<T> foos() {
List sketchy = new ArrayList();
sketchy.add(BigDecimal.TEN);
return sketchy;
}
}
package whoop.deduper;
import static java.lang.System.out;
/**
* @author deduper
*
*/
public class EffedUp {
/**
* @param args
*/
public static void main(String[ ] args) {
int effedUp = new FuBar().fuBar();
out.println(effedUp + " — But it works!");
}
}
...それはなぜ機能するのですか?つまり、ClassCastExceptionやどこかに何かがあると思います!なぜそこにいないのですか?
ここで何が起こっているのかを誰かが明確に書かれた説明に指摘できますか?
ありがとうございます。
この未加工のタイプのために、 '' List sketchy = new ArrayList(); 'ができます。また、あなたのIDEは 'Bar#foos'でその戻り値を警告しなければなりません。 – Tom