泛型,类型安全机制。

好处:

1.将运行时期出现问题ClassCastException转移到了编译时期,方便解决问题,减少运行时期的问题,有利于程序的健壮性。

2.避免了强制转换的麻烦

泛型格式:

ArrayList<String> al = new ArrayList<String>();

若增加Integer类型的数据,在编译的时期就会提示错误。

使用迭代器取值的时候,需要声明类型

示例代码:

import java.util.*;

class GenericDemo2
{
public static void main(String[] args)
{
TreeSet<String> ts = new TreeSet<String>(new LenComparator());
ts.add("abcdc");
ts.add("dbcdc");
ts.add("cd"); Iterator<String> it = ts.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
} class LenComparator implements Comparator<String>
{
public int compare(String obj1, String obj2){
int num = new Integer(obj1.length()).compareTo(new Integer(obj2.length())); if(num==0)
return obj2.compareTo(obj1);
return num; }
}

问题一、

在使用java提供的对象时,什么时候使用泛型?

答:

通常在集合框架中比较常见。只要见到<>就要定义泛型

接口Collection<E>:E代表一个变量,形式参数。

其实<>就是用来接收类型的。

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

------------------------------------

//泛型类
class Utils<T>
{
    private T t;
    public void setObject(T t){
        this.t = t;
    }

public T getObject(){
        return t;
    }
}

Demo<String> d = new Demoe<String>();

当类中要操作的引用数据类型不确定的时候,早起定义Object来完成拓展,现在定义泛型来完成拓展。

泛型类的对象明确要操作的具体类型后,所有方法要操作的类型就已经固定了。

------------------------------------------

为了让不同的方法可以操作不同的类型,而且类型还不确定,那么可以将泛型定义在方法上。

class Demo{

public <T>void show(T t){

}

public <T>void print(T t){

}

}

Demo d = new Demo();

-----------------------------------

静态方法,不可以访问类上定义的泛型。

如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。

public static <W> void method(W t);

--------------------------------------

泛型限定:

<? extends Person>

? :通配符,可以理解为占位符

----------------------------------

泛型的限定:

用于泛型扩展

上限:

? extends E: 可以接受E类型或者E的子类类型。

下限:

? super E:可以接受E类型,或者E的父类型。

里面只能使用父类方法。

Java安全机制之泛型(JDK1.5)的更多相关文章

  1. JAVA反射机制--怎么不受泛型束缚给数组赋值

    在Java中,声明数组的时候我们经常会写泛型限制用户输入或者获取的数据.如:ArrayList<String> list = new ArrayList<>(); String ...

  2. Java 异常处理机制和集合框架

    一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...

  3. JAVA提高六:泛型

    在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...

  4. Java线程机制学习

    前面的文章中总结过Java中用来解决共享资源竞争导致线程不安全的几种常用方式: synchronized: ReentrantLock: ThreadLocal: 这些都是在简单介绍了基本用法的基础上 ...

  5. 小白学Java:老师!泛型我懂了!

    目录 小白学Java:老师!泛型我懂了! 泛型概述 定义泛型 泛型类的定义 泛型方法的定义 类型变量的限定 原生类型与向后兼容 通配泛型 非受限通配 受限通配 下限通配 泛型的擦除和限制 类型擦除 类 ...

  6. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  7. Java反射机制专题

    ·Java Reflection Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方 ...

  8. Java 类加载机制

    类的加载: 类的初始化: 类什么时候才被初始化:1)创建类的实例,也就是new一个对象2)访问某个类或接口的静态变量,或者对该静态变量赋值3)调用类的静态方法4)反射(Class.forName(&q ...

  9. Java反射机制的学习

    Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...

随机推荐

  1. cocos2dx CCLayerColor和CCLayerColor

    在cocos2dx中,默认的CCLayer背景是黑色的,有些时候需要特殊的Layer,所以cocos2dx中提供了这两种Layer CCLayerColor是可以改变背景色的Layer,示例如下: C ...

  2. Android应用开发基础篇(4)-----TabHost(选项卡)

    一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...

  3. 安装cocopods 更新ruby

    最近弄cocoapods出现如标题提示  So度娘一番.感谢作者.纯属学习没有商业用途 1.打开终端 终端输入  $ruby -v  查看ruby的版本 打印代码: ruby 2.0.0p648 (2 ...

  4. 为什么C#动态调用Java的cxf多了bool型参数

    最近的一个项目需要C#调用Java的cxf发布的接口,接口参数文档只给我的是两个long型,但是通过我动态加载发现,参数是四个. 比如接口文档给的接口是 TestFunc(long, long); 而 ...

  5. C++之构造函数重载

    #include<stdio.h> class Test    {        private:         int i;         int j;         int k; ...

  6. Installshield 添加应用程序到防火墙例外

    function AddProcessFwauthor() STRING szCServer,szFServer,szTmp; OBJECT objFirewall, objProfile, objC ...

  7. BZOJ 2662: [BeiJing wc2012]冻结(最短路)

    这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. ---------------------------------------- ...

  8. ThinkPHP第十七天(隐藏index.php和简短路径配置)

    1.路由设置,让路径中不显示index.php方法: 第一步:在apache中的httpd.conf中查找: LoadModule rewrite_module modules/mod_rewrite ...

  9. VS2010使用DX报错 VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    更改项目的app.config内容为以下内容 目的是开启对低版本的NETFWK支持 其实出现混合模式集的问题不只是在V1.1.4322这个版本上,在查询解决方案时发现,但凡程序集版本发生改变时,都有可 ...

  10. monkeyrunner环境搭建

    对android世界小白白的人儿,弄个monkeyrunner环境吭哧哧的费了大半天的劲,没办法,因为实在是对这方面一窍不通,名词都是一个个百度才略懂一二,既然这么辛苦费劲的才能弄好,怎么也得记录下来 ...