泛型类、泛型接口、泛型方法(静态注意)
package com.company.java.generic;
/**
* 1.分析如下泛型定义是否正确?
* 1)class A<Parameter>{} 正确
* 2)interface B<Param,Result>{} 正确
* 3)class C{
* public <T>void doMethod(T t){} 正确
* }
* 4)class D<T>{ //不正确(类上泛型不作用于静态方法)
* static void doMethod(T t){}
* }
* 2.分析如下代码,检查代码是否有问题?
* class A<T>{}
* class B extends A<T>{} 不正确
* class C<T> extends A<T>{}正确
* class E extends A<String>{}正确
* 3.分析如下代码,检查代码是否有问题?
*
* interface A<K,V>{}
* class B implements A<K,V>{} 不正确
* class C<K,V> implements A<K,V>{} 正确
* class D implements A<String,Object>{}正确
* class E<K> implments A<K,Object>{}正确
*
* 4.分析如下代码,检查代码是否有问题?
* List<Object> list=new ArrayList<String>();不正确
* List<String> list=new ArrayList<Object>();不正确
*
==上界限定通配符==主要应用在方法上
* List<? extends Object> list=new ArrayList<String>();正确
* //下界限定通配符
* List<? super String> list=new ArrayList<Object>();正确
*/
//泛型接口(接口定义时使用泛型用于约束方法参数类型,返回值类型)
interface Container<T>{
void add(T t);
T get(int i);
int size();
}
//泛型类,当使用一个类实现泛型接口对象时
//说明:类定义时要么声明为泛型类,要么为接口传入具体类型
abstract class AbsContainer<T> implements Container<T>{
@Override
public int size() {
return 0;
}
/**泛型类上的泛型不能约束类中静态方法的泛型类型*/
static <T>T newInstance (T cls){
return cls;
}
void newInstance02 (T cls){
}
}