码迷,mamicode.com
首页 > 编程语言 > 详细

java泛型

时间:2018-06-21 23:45:27      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:访问   基本类型   class   this   列表   acl   静态   private   例子   

泛型作用:
安全:在编译的时候检查类型安全;
省心:所有的强制转换都是自动和隐式的,提高代码的重用率;
 
1.格式:    
class 类型<字母列表>{
修饰符 构造器(字母);
修饰符 返回类型 方法(字母)
}
泛型常见字母:
T     Type 表示类型
K V    分别代表键值中的Key和Value
E     代表Element
?      表示不确定的类型
 
注:泛型声明时,字母不能使用在静态属性、静态方法上;
因为泛型是在使用的时候确定的,静态属性、静态方法编译的时候就确定;
 
2.使用      
使用时指定具体的类型,(不能指定基本类型,而是用引用类型)
1)编译时会进行类型检查;
2)获取数据时不需要进行类型转换
 
 
例子1:
技术分享图片
package com.cy.gen;

/**
 * 泛型类:声明时使用泛型
 * 
 */
public class Student<T1, T2> {
    private T1 javaScore;
    private T2 oracleScore;
    
    //private static T1 phpScore;
    
    public T1 getJavaScore() {
        return javaScore;
    }
    public void setJavaScore(T1 javaScore) {
        this.javaScore = javaScore;
    }
    public T2 getOracleScore() {
        return oracleScore;
    }
    public void setOracleScore(T2 oracleScore) {
        this.oracleScore = oracleScore;
    }
    
    public static void main(String[] args) {
        Student<String, Integer> stu = new Student<String, Integer>();     //使用时指定类型,引用类型
        stu.setJavaScore("优秀");                                        //类型检查
        int oracleScore = stu.getOracleScore();                            //自动类型转换
        
    }
    
}
View Code
例子2,泛型接口:
技术分享图片
package com.cy.gen;

public interface Comparator<T> {
    
    void compare(T t);
}
View Code
例子3:泛型方法:
修饰符 <字母> 返回类型 方法名(字母){
}
要定义泛型方法,只需将泛型参数列表置返回值前;
注:泛型还可以定义在方法中,是否拥有泛型方法,与其所在的类是否泛型没有关系。
package com.cy.gen;

import java.io.Closeable;
import java.io.IOException;

/**
 * 泛型方法 <> 返回类型前面
 * 只能访问对象的信息,不能修改信息
 */
public class TestMethod {
    public static void main(String[] args) {
        test("b");    //T --> String
        test(1);
    }
    
    //泛型方法
    public static<T> void test(T t){
        //t.setXXX();
        System.out.println(t);
    }
    
    //extends <=
    //T是Closeable接口的实现类   ...代表可变参数
    public static<T extends Closeable> void test(T... a){
        for(T temp: a){
            try {
                if(temp!=null) temp.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

 

 

 

 

java泛型

标签:访问   基本类型   class   this   列表   acl   静态   private   例子   

原文地址:https://www.cnblogs.com/tenWood/p/9211285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!