首页 > 编程语言 >java_day14

java_day14

时间:2022-10-18 11:35:29浏览次数:45  
标签:java System day14 println 泛型 new public out

Java基础

Java集合框架

泛型

  • 本质是参数化类型,把类型作为参数传递
  • 常见类型有泛型类、泛型 接口、泛型方法
  • 好处:提高代码的重用性、防止类型转换异常

​ 泛型类

/**
 * 泛型类
 * 语法:类型<T>
 *     T是一个占位符,表示一种引用类型。可以编写多个逗号隔开
 * @author xue
 */
public class GenericDemo<T> {
    //使用泛型T
    T t;

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

    //泛型作为方法的返回值
    public T getT() {
        return t;
    }
}

public class TestGeneric {
    
    public static void main(String[] args) {
        //使用泛型类创建对象
        GenericDemo<String> gd = new GenericDemo();
        gd.t = "test";
        gd.show("nihao");
        System.out.println(gd.getT());

        GenericDemo<Integer> gd2 = new GenericDemo<>();
        gd2.t = 23424;
        gd2.show(234256436);
        System.out.println(gd2.getT());
        
        //不同泛型对象不能相互复制
        //GenericDemo<String> gd3 = gd2;
    }
}

​ 泛型接口

/**
 * 泛型接口
 * 语法:接口名<T>
 * 不能泛型静态常量
 * @param <T>
 * @author xue
 */
public interface GenericDemo2<T> {
    String name = "zhangsan";

    T server(T t);
}


/**
 * 这里是先指定泛型类型
 */
public class GenericDemo2Imp implements GenericDemo2<String>{


    @Override
    public String server(String s) {
        System.out.println(s);
        return s;
    }
}

//使用泛型接口类GenericDemo2Imp
//使用时直接创建对象
        GenericDemo2Imp gd2i = new GenericDemo2Imp();
        gd2i.server("我被String固定了");


/**
 * 这里是不指定泛型类型
 */
public class GenericDemo2Imp2<T> implements GenericDemo2<T>{
    @Override
    public T server(T t) {
        System.out.println(t);
        return t;
    }
}


//使用泛型接口类GenericDemo2Imp2
        GenericDemo2Imp2<Integer> gd2i2 = new GenericDemo2Imp2();
        gd2i2.server(123);
        GenericDemo2Imp2<String> gd2i3 = new GenericDemo2Imp2();
        gd2i3.server("我可以自己指定泛型了");

​ 泛型方法

/**
 * 泛型方法
 * 语法: <T> 返回值类型
 * @author xue
 */
public class FuncDemo {

    //泛型方法 可以是静态
    public <T> T show(T t){
        System.out.println("泛型方法"+t);
        return t;
    }
}

//泛型方法调用
        FuncDemo fd = new FuncDemo();
        //方法传入类型是什么 泛型类型就是什么
        fd.show("我是String类型");

泛型集合

  • 参数化类型、类型安全的集合,强制集合元素的类型必须一致。
  • 编译时即可检查是否异常
  • 访问时不必类型转换了
  • 不同反省之间引用不能相互赋值,泛型不存在多态
public class GenericDemo1 {
    public static void main(String[] args) {
        ArrayList<String> alist = new ArrayList<>();
        alist.add("只能");
        alist.add("添加");
        alist.add("字符串");

        for (String s:alist) {
            System.out.println(alist);
        }

        ArrayList<Student> alist2 = new ArrayList<>();
        Student stu1 = new Student("zhangsan",20);
        Student stu2 = new Student("lisi",23);
        Student stu3 = new Student("wangwu",45);
        alist2.add(stu1);
        alist2.add(stu2);
        alist2.add(stu3);

        Iterator<Student> it = alist2.iterator();
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s);
        }
        
        //有了泛型之后可以发现不必强制转换类型了

    }
}

标签:java,System,day14,println,泛型,new,public,out
From: https://www.cnblogs.com/onlyxue/p/16802013.html

相关文章

  • java的简单了解
    java的简单了解Oracle有两个实现Java平台标准版(JavaSE)8的产品:JavaSE开发工具包(JDK)8和JavaSE运行时环境(JRE)8。JDK8是JRE8的超集,包含JRE8中的所有内容,以及......
  • Java常用框架有哪些?
    原文链接:https://blog.csdn.net/mt776333/article/details/123432030全新java前后端开发需掌握的框架及技术:https://blog.csdn.net/qq_41134427/article/details/11833366......
  • JNA(java native Access)
    在JavaFX开发中,在对应的Java桌面系统范围内,监听绑定事件和web项目类似,绑定dom即可。 但需要在Java桌面系统范围外,全局监听window某些按键,唤醒Java桌面应用或是一些其他......
  • Java 多线程(九)死锁及Lock
    死锁多个线程各自站有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形,某一个同步块同时拥有“两个......
  • Java中的++和--
    一、认识++和--++。当++在前面的时候,先自加1,后进行赋值操作;当++在后面的时候,先进行赋值操作,再自加1。--。当--在前面的时候,先自减1,后进行赋值操作;当--在后面的时候......
  • Java内存模型(JMM)详解
    目录什么是JMM?Java运行时内存区域与硬件内存的关系Java内存区域和Java内存模型有何区别?Java线程与主内存的关系什么是主内存?什么是本地内存?线程间通信重温Java并发三......
  • Java 8 Stream详解
     【Java8系列】Stream详解,看这一篇就够啦https://blog.csdn.net/yy339452689/article/details/110956119......
  • java异常简介简介及其架构
    一.Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健......
  • SpringBoot(五) - Java8 新特性
    1、Lambda表达式Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种......
  • Java I/O(1):模型与流
    在1990年以前,有一帮工程师们认为未来(1990年以后)会有很多小型设备需要得到电脑操控(不得不说,想法非常超前),鉴于当时市面上并没有任何一款编程语言能够跨平台,而且能够在诸如烤......