Java学习总结-08 泛型

一 泛型(Generic)

1 泛型介绍

1 泛型是在JDK1.5以后增加的新功能。泛型(Generic)

2 泛型可以解决数据类型的安全性问题,主要的原理,是在类声明的时候通过一个标识,表示类中某个属性的类型或者是某个方法的返回值及参数类型。

3 格式:

  访问权限 class 类名称<泛型,泛型...>{

    属性

    方法

  }

4 对象的创建

  类名称<具体类型> 对象名称 = new 类名称<具体类型>();

  一般表示泛型使用大写的字母 T 。

5 例子不使用泛型以前,怎么定义地球上的经纬度呢?

package com.bank.generic;

import java.util.ArrayList;
import java.util.List;

/**
 * 地球经纬度
 *
 * */
class Point{
    private Object x;
    private Object y;
    public Object getX()
    {
        return x;
    }
    public void setX(Object x)
    {
        this.x = x;
    }
    public Object getY()
    {
        return y;
    }
    public void setY(Object y)
    {
        this.y = y;
    }

}

public class GenericDemo
{
    public static void main(String[] args)
    {
        Point point = new Point();
        point.setX(10.1f);
        point.setY(20);

        float px = (float) point.getX();
        int py = (int) point.getY();

        System.out.println("px=" + px+",py=" + py);

    }
}

使用泛型改造后的例子。

package com.bank.generic;

/**
 * 地球经纬度
 *
 * */
class Point<T>{
    private T x;
    private T y;
    public T getX()
    {
        return x;
    }
    public void setX(T x)
    {
        this.x = x;
    }
    public T getY()
    {
        return y;
    }
    public void setY(T y)
    {
        this.y = y;
    }

}

public class GenericDemo
{
    public static void main(String[] args)
    {
        Point<Integer> point = new Point<Integer>();
        Point<String> point2 = new Point<String>();

        point.setX(10 );
        point.setY(20);

        int px =  point.getX();
        int py =  point.getY();

        System.out.println("px=" + px+",py=" + py);

    }
}
时间: 2024-11-04 19:00:27

Java学习总结-08 泛型的相关文章

Java学习笔记_26_泛型概述

                                                               泛型概述 在Java中存入容器中的对象再取出时需要转换类型,因为对象加入容器会被转换成Object类型,而取出时要转换成实际类型.但向  下类型转换都 是存在潜在危险的,因此应该尽量避免它们.  Java的泛型: 所谓泛型就是在定义(类.方法.形参.成员变量等等)的时候,指 定它们为通用类型,也就是数据类型可以是任意类型. 泛型为提高大型程序的类型安全和维护带来了很大的潜

JAVA学习第四十一课 — 泛型的基本应用(一)

泛型是JDK1.5以后出现的安全机制,简化机制,提高安全性 泛型的优点 1.将运行时出现的问题ClassCastException转移到了编译时期 2.避免了强制转换的麻烦 <>在当操作的引用数据类型不确定的时候使用,将要操作的引用数据类型导入即可,其实<>就是一个用于接收具体引用数据类型的参数范围 在写程序时,只要用到了带<>的类或接口,就必须要明确传人的具体引用数据类型 import java.util.ArrayList; import java.util.Ite

黑马程序员——JAVA学习笔记九(泛型)

1,    泛型机制是JAVA5才支持,使用泛型机制编写的代码比那些杂乱地使用Object变量,然后再强制类型转换的代码具有更好的安全性和可读性. 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用,在泛型出来以前,泛型程序设计是继承Object来实现的.但是有缺点:1,当获取一个值必须要强制类型转换.2,没有类型检查错误,运行时才会出错.泛型提供了类型参数,解决了此问题.   2,    定义泛型类(generic class).格式: public class Pair<T, U>

恶补java(十)---泛型与集合的再学习

其余的就不多说了,一切都在代码中 package com.gc.generic; /** * JDK5 之前集合对象使用问题: * 1.向集合添加任何类型对象 * 2.从集合取出对象时,数据类型丢失,使用与类型相关方法,强制类型转换 * 存在安全隐患 * * ***************************** * * JDK5中的泛型:允许程序员使用泛型技术限制集合的处理类型 * List<String> list=new ArrayList<String>(); * 从而

Java学习之道:简述泛型通配符&lt;? extends T&gt;和&lt;? super T&gt;

<? extends T>和<? super T>含有JAVA5.0的新的概念.由于它们的外表导致了很多人误解了它们的用途: 1.<? extends T>首先你很容易误解它为继承于T的所有类的集合,这是大错特错的,相信能看下去你一定见过或用过List<? extends T>吧?为什么我说理解成一个集合是错呢?如果理解成一个集合那为什么不用List<T>来表示?所以<? extends T>不是一个集合,而是T的某一种子类的意思,记

Java学习笔记(七):内部类、静态类和泛型

内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种内部类的用法. 成员内部类 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员). 1 class Circle { 2 private double radius = 0; 3 public static int count =1; 4 public Circ

JavaSE入门学习40:Java集合框架之泛型

一Java泛型 JDK 4.0以前装入集合的类型不明确,也就是说集合中的元素,可以是任意类型的对象(对象的引用),如果把某个 对象放入集合,则会忽略它的类型,而把它当做Object处理,从而失去自己的实际类型.从集合中取出时往往需要转 型,效率低,容易产生错误.JDK 5.0泛型指的是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类 型检查,也可以直接按指定类型获取集合元素. 如果我们只写一个排序方法,就能够对整型数组.字符串数组甚至支持排序的任何类型的数组进行排序,这该多 好啊.Ja

Java学习笔记29(集合框架三:泛型)

泛型的概念: 简单地讲,就是同一个方法(类),可以接受不同的数据类型并运行得到相对应的结果,不会出现安全问题 上一篇有一段这样的代码: 没有定义集合类型.迭代器类型 package demo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args)

Java学习2-日期类和Collection集合

Java学习2-日期类和Collection集合 一.日期类 1.date类 1.1 构造方法 date类用来获取时间,将毫秒值转化为时间.常用构造方法有如下: public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒). public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为"历元(epoch)",即1970年1月1日00:00:00 GMT)以来的指定毫秒数. 无参构造可以获得当前的系统时间,有参