package com.yang.exspe01;
//泛型类定义的泛型,在整个类中有效,如果被方法是用
//那么泛型类的对象明确遥操作的具体类型后,所有要操作的类型就已经固定了
//为了让不同的方法可以操作不同的类型,而且类型还不确定
//那么可以将泛型定义在方法上
//特殊之处,静态方法不可以访问类上定义的泛型
//如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
//public static<T> void method(T t),放在修饰符的后面 返回值得前面
public class Demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
yang<String> demo = new yang<String>();
demo.show("hah1");
demo.print("hehe");
demo.show("new");
yang<Integer> demo2 = new yang<Integer>();
demo2.show(new Integer(4));
}
}
class yang<T>
{
public void show(T t) {
System.out.println(t);
}
public void print(T t)
{
System.out.println(t);
}
public static<T> void method(T t)
{
System.out.println(t);
}
}
package com.yang.exspe01;
//泛型定义在接口上
public class Demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
InterImpl impl=new InterImpl();
impl.show("haha");
}
}
interface Inter<T>
{
void show(T t);
}
class InterImpl implements Inter<String>
{
public void show(String tString) {
System.out.println("show"+tString);
}
}
package com.yang.exspe01;
/*
* ?通配符,也可以理解为占位符
* 泛型的限定:
* ? extends E:可以接收E类型或者E类型的子类型。上限
* ? super E:可以接收E类型或者E的父类型,下限
* 泛型限定 是用来泛型扩展用的
*
* */
import java.awt.print.Printable;
import java.security.AlgorithmConstraints;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arrayList=new ArrayList<String>();
arrayList.add("adf");
arrayList.add("bdf");
arrayList.add("ertt");
ArrayList<Integer> arrayList2=new ArrayList<Integer>();
arrayList2.add(4);
arrayList2.add(7);
arrayList2.add(3);
printColl(arrayList);
printColl(arrayList2);
}
public static void printColl(ArrayList<?> arrayList){
Iterator<?>iterator=arrayList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}