栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

说一下泛型原理,并举例说明

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

说一下泛型原理,并举例说明

1.泛型的基础概念

泛型实现了参数化类型的概念,使代码可以应用于多种类型。

  • 简单泛型
public class Hold {
private T a;
public Hold(T a){
    this.a = a;
}

public T getA() {
    return a;
}

public void setA(T a) {
    this.a = a;
}
}
  • 泛型接口
public interface Generator {
T test();
}
  • 泛型方法
public class Hold{
     public  void f(T a){
     System.out.println(a.getClass().getName());
 }
}
2.泛型的擦除

考点:在泛型代码内部,无法获得任何有关泛型参数类型的信息。

  • 考题1
  class c1 = new ArrayList().getClass();
  class c2 = new ArrayList().getClass();
  System.out.println(c1 == c2);
  答案:true
  • 考题2
class Frob {}
class Fnorkle {}
class Quark {}
class Particle {}

public class LostInformation {
public static void main(String[] args) {
  List list = new ArrayList();
  Map map = new HashMap();
  Quark quark = new Quark();
  Particle p = new Particle();
  System.out.println(Arrays.toString(
    list.getClass().getTypeParameters()));
  System.out.println(Arrays.toString(
    map.getClass().getTypeParameters()));
  System.out.println(Arrays.toString(
    quark.getClass().getTypeParameters()));
  System.out.println(Arrays.toString(
    p.getClass().getTypeParameters()));
}
} 

//:~

3.泛型的边界

将某个参数限制为某个类型的子集。为了执行这种限制,Java 泛型重用了extends 关键字。

interface HasColor { java.awt.Color getColor(); }

class Colored {
 T item;
 Colored(T item) { this.item = item; }
 T getItem() { return item; }
 // The bound allows you to call a method:
 java.awt.Color color() { return item.getColor(); }
}

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号