泛型类及泛型方法的使用

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静态方法,但是静态方法的类型不能和类的泛型的类型相同

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/93327245