泛型 一般 出如今集合中,迭代器中 也会出现!
     泛型 是为了 提高代码的 安全性。

泛型 确保数据类型的唯一性。

在我们经常使用的容器中。  越是 单一 约优点理啊!  

    泛型的限定:
? 是通配符 指代 随意类型

泛型的限定上限:
<? extends E> 接受 E 或者 E 的子类型。

泛型的限定下限:
<?  super   E>  接收  E 或者 E 的父类。

泛型的限定上限 (定义父类 填装子类 类型。)
  代码:
package stu.love.v;

import java.util.*;

//泛型限定上限的应用

class Demo12
{
public static void main(String[] args)
{ Collection<Student> c = new ArrayList<Student>(); c.add(new Student("zhaosi",23));
c.add(new Student("lisi",25));
c.add(new Student("wangwu",20)); //TreeSet(Collection<? extends E> c)
// class TreeSet<E>
//{
//}
TreeSet<Person> ts = new TreeSet<Person>(c); Iterator<Person> ite = ts.iterator();
while(ite.hasNext())
{
sop(ite.next());
}
} public static void sop(Object obj)
{
System.out.println(obj);
}
}

泛型的限定下限:(一般用于定义 迭代器: 仅仅需定义 父类类型的迭代器,否则 面向详细的话。扩展性和维护性不好!


代码:

package stu.love.v;

import java.util.*;

import stu.love.v.Demo11;

/*// 子类 特殊的 比較器  Student
class ComByAge implements Comparator<Student>
{
public int compare(Student s1,Student s2)
{
int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
if(num==0)
return s1.getName().compareTo(s2.getName());
return num;
}
} // 子类 特殊的 比較器 Teacher
class ComByAge2 implements Comparator<Teacher>
{
public int compare(Teacher s1,Teacher s2)
{
int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
if(num==0)
return s1.getName().compareTo(s2.getName());
return num;
}
}*/ //父类的比較器 <Person>
class CompareByAge implements Comparator<Person>
{
public int compare(Person s1,Person s2)
{
int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
if(num==0)
return s1.getName().compareTo(s2.getName());
return num;
} } class Demo13
{
//TreeSet<E>(Comparator<? super E> comparator) 定义比較器时,能够是E类型,还能够是E的父类型,E在创建集合对象时确定
public static void main(String[] args)
{
TreeSet<Student> t1 = new TreeSet<Student>(new CompareByAge());
t1.add(new Student("zhaosi",23));
t1.add(new Student("lisi",25));
t1.add(new Student("wangwu",20)); TreeSet<Teacher> t2 = new TreeSet<Teacher>(new CompareByAge());
t2.add(new Teacher("wang",38));
t2.add(new Teacher("lilaoshi",48));
t2.add(new Teacher("zhanglaoshi",58));
} }





Java 中 泛型的限定的更多相关文章

  1. Java中泛型 类型擦除

    转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...

  2. Java中泛型使用

    Java中泛型使用 泛型作用: 泛型:集合类添加对象不用强转 反射机制:将泛型固定的类的所有方法和成员全部显示出来 核心代码: ArrayList<Ls> ff=new ArrayList ...

  3. Java中泛型的理解

    Java中的泛型,本质上来说,就是是参数化类型,就是说所操作的数据类型被指定为一个参数,而不是确定的某种类型.这种数据类型可以用在类.接口和方法创建中.即泛型类.泛型接口.泛型方法.这样说可能不够生动 ...

  4. Java中泛型在集合框架中的应用

    泛型是Java中的一个重要概念,上一篇文章我们说过,当元素存入集合时,集合会将元素转换为Object类型存储,当取出时也是按照Object取出的,所以用get方法取出时,我们会进行强制类型转换,并且通 ...

  5. Java 中泛型的全面解析(转)

    Java泛型(generics) 是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在J ...

  6. Java中泛型数组创建总结

    在java中,可以声明一个泛型数组,不能通过直接通过T[] tarr=new T[10]的方式来创建数组,最简单的方式便是通过Array.newInstance(Classtype,int size) ...

  7. Java中泛型Class<T>、T与Class<?>、 Object类和Class类、 object.getClass()和Object.class

    一.区别 单独的T 代表一个类型(表现形式是一个类名而已) ,而 Class<T>代表这个类型所对应的类(又可以称做类实例.类类型.字节码文件), Class<?>表示类型不确 ...

  8. Java中泛型区别以及泛型擦除详解

    一.引言 复习javac的编译过程中的解语法糖的时候看见了泛型擦除中的举例,网上的资料大多比较散各针对性不一,在此做出自己的一些详细且易懂的总结. 二.泛型简介 泛型是JDK 1.5的一项新特性,一种 ...

  9. 用反射来了解Java中泛型的本质

    这篇文章主要通过Class的Method来了解泛型的本质. 先new 两个List,一个不加类型限制,另外一个限制类型为String: ArrayList list = new ArrayList() ...

随机推荐

  1. JavaScript设计模式基础之面向对象的JavaScript(一)

    动态语言类型与鸭子类型 此内容取自JavaScript设计模式与开发实践一书 编程语言按照数据类型大体可以分为2类,一类就是静态类型语言,另一类则是动态类型语言 静态类型语言也可以称之为编译语言,而动 ...

  2. node.js从入门到放弃(一)

    以下内容全是我个人理解写出,如有不对,请立刻练习本人进行更改.以免被刚入门的被我带入坑里. —node是什么?我想大家应该都知道. node是前端未来干掉后端的一种语言,是用JavaScript来编写 ...

  3. tomcat 403错误和ls: cannot open directory '.': Permission denied

    在centos7 linux系统上使用docker进行tomcat部署项目测试的时候发现第一个错误:浏览器返回403 错误,显然是一个权限问题,禁止访问.下面是我一步一步的操作: 1 使用的docke ...

  4. The Coco-Cola Store

    UVA11877 The Coco-Cola Store Once upon a time, there is a special coco-cola store. If you return thr ...

  5. 【Codeforces 1107D】Compression

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 先把所给的压缩形式的字符串转成二进制 然后对获得的01数组做一个前缀和(a[i][j]=以(i,j)为右下角,(1,1)为左上角的矩形内的数字 ...

  6. HDU 5487 Difference of Languages

    Difference of Languages Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. ...

  7. CPU问题定位与解决

    CPU问题定位基本流程:   性能计数器诊断 主要用到的性能计数器 %Process Time 全实例 (主要用于查看当前服务器的CPU 情况) %Process Time sqlservr (主要用 ...

  8. BZOJ1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    给n<=4000000,c,a1,b1,c1,a2,b2,c2,以c为初始得到的数,每次可以把得到的某个数x进行操作f1(x)=a1*x/c1+b1,f2(x)=a2*x/c2+b2,求最后能得 ...

  9. poj1273最大流初破

    第一次网络流,学了一天的DINIC算法(个人比较愚),切了这个入门题,开始的时候怎么调连 测试都过不了,后来发现犯了一个低级错误!把判断条件放在for(:)!里面和放在for下面大大 不同啊!里面的话 ...

  10. THUPC2018看题总结

    THUPC2018看题总结 #6387. 「THUPC2018」绿绿与串串 / String 据说是签到题啊. 首先根据题目的意思,我们发现如果能找到那个最后一次选择的对称轴岂不是美滋滋. 自然地,我 ...