答案其實很簡單,都是非常基礎(chǔ)的東西,但是平時可能不太在意這些細(xì)節(jié),在找的時候也有可能不太確定(對我來說
)。
答案如下:

答案如下:
import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.junit.Test; public class GenericTest { static class Person { public void m(Collection<Person> persons) { } } //泛型聲明要放在返回值的前面,所以<T>要放在void前面 static class Employee extends Person { public void <T> isManager() { } } //泛型不具有協(xié)變性,所以下面是編譯不了的 static class Student extends Person { public void m2(Collection<Student> students) { super.m(students); } } //數(shù)組具有協(xié)變性,對于用父類聲明的子類數(shù)組,在設(shè)置其他子類對象的時候雖然編譯不報錯,但是運行時會拋出ArrayStoreException @Test(expected=ArrayStoreException.class) public void arrayStoreExceptionTest() { Person[] persons = new Employee[5]; persons[0] = new Employee(); persons[1] = new Student(); } //下面是正確的 @Test public void arrayStoreTest() { Person[] persons = new Person[2]; persons[0] = new Employee(); persons[1] = new Student(); } //下面語句在編譯時就會出錯,體現(xiàn)出泛型列表不具有協(xié)變性 public void genericTest() { List<Person> personList = new ArrayList<Employee>(); } //static方法和static域均不可引用類的泛型變量,下例中即T static class Generic<T> { static T t; static void method1(T t) { } void m1(T t){ } } }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
