ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中的泛型

2020-02-06 20:56:57  阅读:156  来源: 互联网

标签:Java object class 泛型 new GeneralType Type public


  泛型的本质是将类型参数化,即将所操作的数据类型编程一个参数。

  特性:Java中的泛型只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型相关信息擦除,不会进入运行阶段。在逻辑上是多个不同的类型,实际上都是相同的类型。

class GeneralType <Type>{
	Type object;
	public GeneralType(Type object){
		this.object = object;
	}
	public Type getObj(){
		return object;
	}
}

public class Test{
	public static void main(String[] args){
		GeneralType<Integer> i =
			new GeneralType<Integer>(2);
		GeneralType<Double> d = 
			new GeneralType<Double>(0.33);
	System.out.println("i.object = " + (Integer)i.getObj());
	System.out.println("i.object=" + (Integer)d.getObj()); //编译错误
	}
}

 

1.泛型方法

class GeneralMethod{
	<Type>void printClassName(Type object){
		System.out.println("object.getClass().getName()");
	}
}

public class Test{
	public static void main(String[] args){
		GeneralMethod gm = new GeneralMethod();
		gm.printClassName("Hello");
		gm.printClassName(3);
		gm.printClassName(3.0f);
		gm.printClassName(3.0);
	}
}

//使用?作为 通配符
class GeneralType <Type>{
	Type object;
	public GeneralType(Type object){
		this.object = object;
	}
	public Type getObj(){
		return object;
	}
}
class ShowType{
	public void show(GeneralType<?> o){
		System.out.println(o.getObj().getClass().getName());
	}
}


public class Test{
	public static void main(String[] args){
		ShowType st = new ShowType();
		GeneralType<Integer> i = new GeneralType<Integer>(2);
		GeneralType<String> s = new GeneralType<String>("Hello");
		st.show(i);
		st.show(s);
	}
}

//运行结果
java.lang.Integer
java.lang.String 

 有限制的泛型

  在参数Type后面使用extends关键字并加上类名或者接口名,表明参数所代表的类型必须是该类的子类或者实现了该接口。对于实现了某接口的有限制泛型,也是使用extends关键字,而不是implements关键字。

class GeneralType <Type extends Number>{
	Type object;
	public GeneralType(Type object){
		this.object = object;
	}
	public Type getObj(){
		return object;
	}
}
class ShowType{
	public void show(GeneralType<?> o){
		System.out.println(o.getObj().getClass().getName());
	}
}


public class Test{
	public static void main(String[] args){
		ShowType st = new ShowType();
		GeneralType<Integer> i = new GeneralType<Integer>(2);
		GeneralType<String> s = new GeneralType<String>("Hello");//非法,T只能是Number或Number的子类
		st.show(i);
		st.show(s);
	}
}

  

标签:Java,object,class,泛型,new,GeneralType,Type,public
来源: https://www.cnblogs.com/thwyc/p/12270287.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有