1、泛型类
package com.wyq.StringBuffer;
public class MyGe<T> {
//在这里的T只是占位符,并没有表示是什么类型
public void show(T t){//方法中的泛型T,在差一個年MyGe類的对象的时候就会决定T的类型
System.out.println(t);
}
public <Q> void fun(Q q){//Q类型,在该方法被调用的时候会生效
System.out.println(q);
}
// public static void method(T t){
// /**static静态方法使用泛型会报错
// * 报错原因是static静态方法在类加载到内存的时候一同加载,而在这个时候,T的类型还根本没有确定
// * 所以这种情况就出现了报错
// */
// }
public static <E> void method2(E e){//E的类型在访问方法被调用的时候确定
System.out.println(e);
}
public <k> void myMethod(k ... k){//可变参数的泛型方法
for(int i = 0;i<k.length;i++){
System.out.println(k[i]);
}
}
}
2、泛型了对象的创建
package com.wyq.StringBuffer;
public class TestMyG {
MyGe<Integer> my1 = new MyGe<Integer>();
//定义Integer类型
MyGe<String> my2 = new MyGe<String>();
//定义为String类型
MyGe<Person> my3 = new MyGe<Person>();
}
3、泛型中主方法的使用
package com.wyq.StringBuffer;
import java.util.Date;
public class TestMyMeth {
public static void main(String[] args) {
MyGe<String> my1 = new MyGe<String>();
my1.show("hello");
MyGe<Integer> my2 = new MyGe<Integer>();
my2.show(123);
my1.fun("world");
my1.fun(123);
my1.fun(new Date());
my1.fun(new Person());
my2.myMethod("hello");
my2.myMethod("hello","world");
my2.myMethod(123);
my2.myMethod(123,35,4345,2345);
}
}
总结:
在创建类的时候,使用E占位符先占位,然后再后边对象调用的时候,传递类型,传递什么类型就使用什么类型
在泛型类中可以创建static静态方法,但是静态方法的类型不能和类的泛型的类型相同