源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中generic实例详解

  • 时间:2020-01-15 07:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中generic实例详解
[b]一介绍:[/b] 在JavaSE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。 [b]二、泛型参数:[/b]
class Gen<T> {
 private T ob;
 //定义泛型成员变量
 public Gen(T ob) {
  this.ob = ob;
 }
 public T getOb() {
  return ob;
 }
 public void setOb(T ob) {
  this.ob = ob;
 }
 public void showType() {
  System.out.println("T的实际类型是: " + ob.getClass().getName());
 }
}
public class GenericParameter {
 public static void main(String[] args){
  //定义泛型类Gen的一个Integer版本
  Gen<Integer> intOb=new Gen<Integer>(100);
  intOb.showType();
  int i= intOb.getOb();
  System.out.println("value= " + i);
  System.out.println("----------------------------------");
  //定义泛型类Gen的一个String版本
  Gen<String> strOb=new Gen<String>("Hello Dylan!");
  strOb.showType();
  String s=strOb.getOb();
  System.out.println("value= " + s);
 }
}
output: T的实际类型是: java.lang.Integer value= 100 ---------------------------------- T的实际类型是: java.lang.String value= Hello Dylan! [b]三、泛型类:[/b]
class GenericsFoo<T> {
 private T x;
 public GenericsFoo(T x) {
  this.x = x;
 }
 public T getX() {
  return x;
 }
 public void setX(T x) {
  this.x = x;
 }
}
public class GenericClass {
 public static void main(String args[]){
  GenericsFoo<String> strFoo=new GenericsFoo<String>("Hello Generics!");
  GenericsFoo<double> douFoo=new GenericsFoo<double>(new double("33"));
  GenericsFoo<Object> objFoo=new GenericsFoo<Object>(new Object());
  System.out.println("strFoo.getX="+strFoo.getX());
  System.out.println("douFoo.getX="+douFoo.getX());
  System.out.println("objFoo.getX="+objFoo.getX());
 }
}
output: strFoo.getX=Hello Generics! douFoo.getX=33.0 objFoo.getX=java.lang.Object@1d0fafc [b]四 限制泛型:[/b]
import java.util.ArrayList;
import java.util.Collection;
class CollectionGenFoo<T extends Collection> {
 private T x;
 public CollectionGenFoo(T x) {
  this.x = x;
 }
 public T getX() {
  return x;
 }
 public void setX(T x) {
  this.x = x;
 }
}
public class GenericRestrict {
 public static void main(String[] args) {
  CollectionGenFoo<ArrayList> listFoo = null;
  listFoo = new CollectionGenFoo<ArrayList>(new ArrayList());
  CollectionGenFoo<? extends Collection> listFoo1 = null;
  listFoo1=new CollectionGenFoo<ArrayList>(new ArrayList());
  System.out.println("实例化成功!");
 }
}
output: 实例化成功! 五 泛型方法:
public class GenericFunction {
 public <T> void f(T x) {
  System.out.println(x.getClass().getName());
 }
 public static void main(String[] args) {
  GenericFunction ea = new GenericFunction();
  ea.f(" ");
  ea.f(10);
  ea.f('a');
  ea.f(ea);
 }
}
output: java.lang.String java.lang.Integer java.lang.Character GenericFunction ----------------------------- dylan presents. [b]总结[/b] 以上就是本文关于java中generic实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部