Neden aşağıdaki derleme var? Bana buBu neden derleniyor? Türü silme
getTest anlatan bir uyarı olsun()
silinir getTestIntegers böylece ham türü() döndürür Ama getTestIntegers()
jenerik değil neden anlamıyorum. Ben Az önce belirtildiği bir derleme hatayı
public class Scratchpad {
public static void main(String[] args) {
new Scratchpad().run();
}
private void run() {
List<String> tester = Test.getTest().getTestIntegers();
}
private static class Test<T> {
public static Test getTest() {
return new Test();
}
public List<Integer> getTestIntegers() {
return Collections.singletonList(1);
}
}
}
uyarı söylediği gibi ham türü 'sına döndüren getTest' yöntem'. Bunu yapmamalı; Bu yönteme bir tür parametresi eklemelisiniz. Ham türleri kullandığınızda, derleyici geriye dönük uyumluluk moduna girer ve işler beklediğiniz gibi çalışmaz. Bakınız: [Ham tip nedir ve neden kullanmamalıyız?] (Http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use -it) – Jesper
Bağlantı için teşekkürler, "Bir tür, bu tür bir silme" ile ilgilidir "fırsatlar" ve açıkça JLS içinde. Ama anlamadığım şey neden? GetTestIntegers() 'i silmeye gerek duymanın gerekçesi nedir? –