Java泛型的基本应用

发表于:2014-3-25 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jiaozuo2013    来源:51Testing软件测试网采编

分享:
  三、泛型类
  1、格式
  class ClassName<datatype>
  {
  }
  2、优点
  便于对任何未知的的数据类型进行操作,特别适合用作工具类,避免了强制类型转换的麻烦。
  3.示例
import java.util.*;
publicclass GenericClass
{
publicstaticvoid main(String[] args)
{
Tools<String> tools=new Tools<String>("hello");
System.out.println(tools.getObj());
}
}
class Tools<T>
{
private T obj;
public Tools(T t)
{
this.obj=t;
}
public T getObj() {
returnobj;
}
publicvoid setObj(T obj) {
this.obj = obj;
}
}
  四、泛型方法
  当只需要某一个方法可以接收不同类型的参数,而不是整个类的时候,就可以用到泛型方法,它将大大提高程序代码的扩展性。
  示例代码如下:
import java.util.*;
publicclass GenericMethod
{
publicstaticvoid main(String[] args)
{
String s="hello!Nice to meet you!";
Integer inter=3;
Show show=new Show();
show.print(s);
show.print(inter);
}
}
class  Show
{
public  <Q> void print(Q q)
{
System.out.println(q);
}
}
  五、静态泛型方法
  1、格式
  public static <T> methodName(T param)
  {
  }
  2、特点
  由于静态方法不可以访问类中的泛型,如果静态方法操作的类型不确定,这可以把泛型定义在静态方法上。
  3、示例
  publicstatic <Q> void print(Q q)
  {
  System.out.println(q);
  }
  六、泛型接口
  1、格式
  interface Inter<T>
  {
  void show(T t);
  }
  2、特点
  当接口要操作的数据类型不确定的时候,就可以使用泛型接口。
  注意:
  当实现接口的类已经确定了接口具体的类型时,创建对象时就不用再指明类型了,如:
  class InterImpl implements Inter<String>
  {
  }
  如果实现类仍不知道具体的类型,就要创建对象时指明,如:
  class InterImpl<T> implements Inter<T>
  {
  }
  InterImpl<String> im=new InterImpl<String>();
  3、示例
import java.util.*;
public class Test
{
public static void main(String[] args)
{
InterImpl<String> im=new InterImpl<String>();
im.print("hello");
}
}
interface Inter<T>
{
void print(T t);
}
class InterImpl<T> implements Inter<T>
{
public void print(T s)
{
System.out.println(s);
}
}
  七、泛型extends限定
  extends E:接收E类型或者E的子类型对象。上限
  一般存储对象的时候用。比如添加元素 addAll.
  八、泛型super限定
  super E:接收E类型或者E的父类型对象。下限。
  一般取出对象的时候用。比如比较器。
22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号