美文网首页Java基础
Java 常用工具类--泛型

Java 常用工具类--泛型

作者: 磊_5d71 | 来源:发表于2018-09-15 17:08 被阅读0次
  • 不使用泛型
    1、需要强制类型转换
    2、可以添加任意类型,并且编译阶段不会报错,运行时会报错。给程序带来隐患。

  • JDK1.7以后,构造方法中可以省略泛型类型
    List<String> list = new ArrayList<>();

泛型作为方法的参数

  • Goods类及其子类Book、Shoes、Clothes
package com.alan.generic;

public abstract class Goods {
    
    public abstract void sell();

}
package com.alan.generic;

public class Book extends Goods {

    @Override
    public void sell() {
        System.out.println("sell book!");

    }

}
package com.alan.generic;

public class Clothes extends Goods {

    @Override
    public void sell() {
        System.out.println("sell clothes!");

    }

}
package com.alan.generic;

public class Shoes extends Goods {

    @Override
    public void sell() {
        System.out.println("sell shoes!");

    }

}
  • GoodsSeller实现类,参数为泛型List<? extends Goods>
package com.alan.generic;

import java.util.List;

public class GoodsSeller {

    //通过? extends Goods 泛型定义为 Goods以及继承自它的子类
    public void sellGoods(List<? extends Goods> goods) {

        for (Goods g : goods) {
            g.sell();
        }
    }

}
  • 测试类
package com.alan.generic;

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

public class GoodsTest {

    public static void main(String[] args) {
        //
        List<Book> bookList = new ArrayList<Book>();
        bookList.add(new Book());
        bookList.add(new Book());
        bookList.add(new Book());

        List<Clothes> clothesList = new ArrayList<Clothes>();
        clothesList.add(new Clothes());
        clothesList.add(new Clothes());
        clothesList.add(new Clothes());

        List<Shoes> shoesList = new ArrayList<Shoes>();
        shoesList.add(new Shoes());
        shoesList.add(new Shoes());
        shoesList.add(new Shoes());

        // 通过泛型作为参数类型,多态方式实现输出
        GoodsSeller gs = new GoodsSeller();
        gs.sellGoods(bookList);
        gs.sellGoods(clothesList);
        gs.sellGoods(shoesList);
    }

}

自定义泛型类

  • 案例1
package com.alan.generic;

public class NumGeneric<T> {
    
    private T num;

    public T getNum() {
        return num;
    }

    public void setNum(T num) {
        this.num = num;
    }
    
    //测试主方法
    public static void main(String args[]) {
        NumGeneric<Double> doubleNum = new NumGeneric<Double>();
        doubleNum.setNum(10.0);
        System.out.println("double:"+doubleNum.getNum());
        
        NumGeneric<Integer> integerNum = new NumGeneric<Integer>();
        integerNum.setNum(10);
        System.out.println("integer:"+integerNum.getNum());
    }

}
  • 案例2
package com.alan.generic;

public class TwoNumGeneric <T , X> {
    
    private T num1;
    private X num2;
    
    public void getNum(T num1,X num2) {
        this.num1 = num1;
        this.num2 = num2;
    }
    
    
    public T getNum1() {
        return num1;
    }
    public void setNum1(T num1) {
        this.num1 = num1;
    }
    public X getNum2() {
        return num2;
    }
    public void setNum2(X num2) {
        this.num2 = num2;
    }
    
    public static void main(String args[]) {
        
        TwoNumGeneric<Integer,Float> twoNum = new TwoNumGeneric<>();
        twoNum.getNum(10, 5.5f);
        System.out.println(twoNum.getNum1()+"  "+twoNum.getNum2());
        
    }

}

自定义泛型方法

package com.alan.generic;

public class GenericMethod {

    public <T> void printValue(T t) {
        System.out.println(t);
    }
    
    public static void main(String args[]) {
        
        GenericMethod gm = new GenericMethod();
        gm.printValue("hello");
        gm.printValue(123);
        gm.printValue(10.5f);
        
    }
}

相关文章

  • Java泛型教程

    Java泛型教程导航 Java 泛型概述 Java泛型环境设置 Java泛型通用类 Java泛型类型参数命名约定 ...

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • java泛型中类型擦除的一些思考

    java泛型 java泛型介绍 java泛型的参数只可以代表类,不能代表个别对象。由于java泛型的类型参数之实际...

  • JAVA 核心笔记 || [xxx] 泛型

    泛型 JAVA 的参数化类型 称为 泛型 泛型类的设计 Learn12.java 运行

  • 想理解泛型吗?看这一篇就够了!

    一、前言二、泛型类2.1 概述Java中泛型使用情况大致包括三种:泛型类、泛型接口、泛型方法 本节演示泛型类。 2...

  • Kotlin 泛型

    Kotlin 支持泛型, 语法和 Java 类似。例如,泛型类: 泛型函数: 类型变异 Java 的泛型中,最难理...

  • 泛型依赖注入

    泛型依赖注入 1.定义泛型 Java代码: 2.实现基类,声明泛型 Java代码: xml代码:

  • 泛型

    与Java泛型相同,Kotlin同样提供了泛型支持。对于简单的泛型类、泛型函数的定义,Kotlin 与 Java ...

  • kotlin--泛型

    kotlin作为一种高级语言,也提供了泛型,它的泛型比Java更为灵活 一、泛型类 1.定义泛型类 定义泛型类和J...

  • Android 学习(一):Java 泛型

    Java泛型学习 1.0 泛型常用案例 2.0 泛型方法 3.0 泛型类 4.0 通配符 ? 通配符,占位符,标识...

网友评论

    本文标题:Java 常用工具类--泛型

    本文链接:https://www.haomeiwen.com/subject/zluzgftx.html