首页 > 其他分享 >Day06-泛型

Day06-泛型

时间:2022-08-26 19:34:55浏览次数:76  
标签:Day06 System println student 泛型 new public

泛型

1.泛型介绍

  • 泛型是JDK1.5引入的新特性,本质是参数化类型,把类型作为参数传递

  • 常见形式有:泛型类,泛型接口,泛型方法

  • 语法:

    • <T,....>:T称为类型占位符,表示一种引用数据类型
  • 好处:

    • 提高代码重用性
    • 防止类型转换错误,提高代码安全性

2.泛型类

/*
泛型类
语法:类名<T>
T:类型占位符,表示一种引用数据类型,创建多个需要用逗号隔开
 */
public class Demo01<T> {
    //1.创建泛型变量,不能实例化(不确定构造方法)
    T t;

    //2.泛型作为方法的参数
    public void show(T t){
        System.out.println(t);
    }

    //3.泛型作为方法的返回值
    public T getT(){
        return t;
    }
}
public class Test {
    public static void main(String[] args) {
        //只能使用引用类型填充T
        Demo01<String> s = new Demo01<String>();
        s.t="world";
        s.show("hello");
        System.out.println(s.getT());

        Demo01<Integer> integer = new Demo01<>();
        integer.t = 10;
        integer.show(22);
        System.out.println(integer.getT());
    }
}

//输出结果:
hello
world
22
10

3.泛型接口

/*
泛型接口:接口名<>
不可创建泛型静态常量
 */
//定义接口MyInterface
public interface MyInterface<T> {
    String name = "zhangsan";

    //泛型方法,传入值和返回值均为泛型
    T serve(T t);
}
//可以确定T的类型,继承接口时写明类型
public class MyInterfaceImpl implements MyInterface<String> {
    @Override
    public String serve(String s) {
        System.out.println(s);
        return s;
    }
}
//不确定接口泛型的具体类型,实现类使用泛型。实例化的时候再传入类型
public class MyInterfaceImplFan<T> implements MyInterface<T> {
    @Override
    public T serve(T t) {
        System.out.println(t);
        return t;
    }
}
//泛型接口的实现类
MyInterfaceImpl impl = new MyInterfaceImpl();
impl.serve("discount");

//泛型接口的泛型实现类
MyInterfaceImplFan<Integer> implFan = new MyInterfaceImplFan<>();
implFan.serve(100);

//输出结果:
discount
100

4.泛型方法

//泛型方法
//语法:<T> 返回值类型
public class GenericMethod {

   public  <T> void show(T t){
       System.out.println(t);
   }
}
//泛型方法
System.out.println("--------3.泛型方法-------");
GenericMethod method = new GenericMethod();
method.show(10);
method.show("string");

//输出结果:
10
string

5.泛型集合

  • 概念:参数化类型,类型安全的集合,强制集合元素的类型必须一致
  • 特点:
    • 编译时即可检查,而非运行时抛出异常‘
    • 访问时不必类型转换(拆箱)
    • 不同泛型之间引用不能相互赋值,泛型不存在多态。
//泛型集合
public class GenericCollection {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();//Object类型
        arrayList.add("xxx");
        arrayList.add("yyy");
        arrayList.add(111);
        arrayList.add(222);

//        for (Object object:arrayList
//             ) {
//            //类型转换时报错,原arrayList数组含多种类型的数据,不能全部转换为同一种
//            String s = (String)object;
//            System.out.println(s);
//        }

        //使用泛型,规定集合内元素均为student类型
        ArrayList<student> arrayList1 = new ArrayList<>();
        student s1 = new student("zmy",26);
        student s2 = new student("pjh",32);
        student s3 = new student("ssw",29);
        arrayList1.add(s1);
        arrayList1.add(s2);
        arrayList1.add(s3);

        //迭代器·遍历(遍历时不需要类型转换)
        ListIterator<student> lit = arrayList1.listIterator();
        while (lit.hasNext()){
            student student = lit.next();
            System.out.println(student);
        }

    }
}

//输出结果:
student{name='zmy', age=26}
student{name='pjh', age=32}
student{name='ssw', age=29}

标签:Day06,System,println,student,泛型,new,public
From: https://www.cnblogs.com/workplace-blog/p/16628954.html

相关文章

  • 图文详解 Java 泛型,写得太好了!
    泛型——一种可以接收数据类型的数据类型,本文将通俗讲解Java泛型的优点、方法及相关细节。一、泛型的引入我们都知道,继承是面向对象的三大特性之一,比如在我们向集合中......
  • 你真的了解java的泛型吗?
    1.java可以声明泛型数组吗?​ 我们都知道在java中声明一个普通数组,但是你知道如何声明一个泛型数组吗?​ 先来看一个简单的例子,Animals是Cat的父类,思考下Animals[]和Cat[......
  • java泛型详解
    java泛型详解1.泛型​ Java泛型是J2SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(typeparameter)这种参数类型可以用在类、接......
  • 面试--泛型
    ☺面试聊聊泛型?泛型是jdk5的一个新特性,Java5之前,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你......
  • day06用户交互Scanner
    用户交互Scanner我们可以用Scanner类来获取用户的输入基本语法:Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字......
  • ts的接口和泛型的基本语法
    一、接口 1.接口定义    接口是一种规范的定义,它定义行为和规范,在程序设计中接口起到限制和规范的作用。2.接口的声明与使用//声明对象类型接口interface......
  • 适配器的应用(泛型模式)
    适配器模式是一种重要的设计模式,能让代码简练。直接上代码。定义接口,如下所示:publicinterfaceIOrderOperate<C,U,D>{/***创建单据*/boolea......
  • 基于泛型实现的B-Tree号称比用interface的快20%~30%
    测试比较的是在B-Tree里面存放int类型数字这个非常特殊的场景。Google的实现中参数都是interface,因为int类型的数字要转成interface,且发生了逃逸。用泛型减少了数字分配到......
  • JavaSE第十一章:泛型
    史上最全的知识体系脑图,覆盖所有知识点,所有细节,注意事项。泛型:包含为什么要有泛型?使用泛型,泛型的几个重要应用,在集合中使用泛型,自定义泛型类,自定义泛型接口,自定义泛型方法......
  • 简单说一下泛型
    Java泛型不变性  泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数......