答案其實(shí)很簡單,都是非常基礎(chǔ)的東西,但是平時(shí)可能不太在意這些細(xì)節(jié),在找的時(shí)候也有可能不太確定(對(duì)我來說
)。
答案如下:
答案如下:
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é)變性,對(duì)于用父類聲明的子類數(shù)組,在設(shè)置其他子類對(duì)象的時(shí)候雖然編譯不報(bào)錯(cuò),但是運(yùn)行時(shí)會(huì)拋出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();
}
//下面語句在編譯時(shí)就會(huì)出錯(cuò),體現(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號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

