首页 > 编程语言 >java泛型笔记(根据青空的霞光)

java泛型笔记(根据青空的霞光)

时间:2023-10-08 16:57:35浏览次数:35  
标签:java String value 类型 青空 泛型 public name

问题:

  • 有些数据的他的类型是不固定的,比如成绩:可以是数字,也可以是字符串(比如优良),那么要存储这样的数据要用什么数据类型

  • 可以使用object类型来解决这个问题,但是我们无法判断对方传进来的到底是什么类型,如果既不是数字也不是字符串,我们也无法得知。如果想要将object类再转换回数字类型,如果此时传递的是字符,就会报错

泛型类

  • 泛型是一个待定的类型,可以把它当成一个模版,待定的类型就是要填入的东西
public class score <T>{  
    String name;  
    int age;  
    T value;   //T 会根据我们传的类型自动变成  
    public score(String name ,int age ,T value){  
        this.name=name;  
        this.age=age;  
        this.value=value;  
    }  
  
    public T getValue() {  
        return value;  
    }  
}
public class Score <T,U>{  
    String name;  
   U age;  
    T value;   //T 会根据我们传的类型自动变成  
    public Score(String name ,U age ,T value){  
        this.name=name;  
        this.age=age;  
        this.value=value;  
    }  
  
    public T getValue() {  
        return value;  
    }  
}

public class Main {  
    public static void main(String[] args) {  
      Score score=new Score<String,Integer>("cheems",18,"13456");  //只能是包装类
        System.out.println(score.getValue());  
    }  
}
  • 没有指定类型时,就默认object,指定类型就转换。

  • 在编译时,会指定类型

  • 由于泛型只能在创建对象时明确类型,所以静态方法无法使用泛型

  • 不能使用泛型类去创建数组和构造方法,因为不知道类型

  • 一定是引用类型,不支持基本类,基本类的数组是可以的

  • 泛型类不同的指定类型的引用不能相互赋值

  • 如果让泛型指定任意类型就可以填入?本质上是object类,这个时候引用就是可以赋值的

泛型与多态

public interface Test<T> {  
    T test();  
}
 
public class Main {  
    public static void main(String[] args) {  
        System.out.println(new A().test());  
  
    }  
    static class A implements Test<String> {  
        @Override  
        public  String test() {  
            return "啊 确实";  
        }  
    }  
}
  • 也可以在泛型接口之后再次使用泛型

  • 同时也可以string

  • 继承也是一样的

泛型方法

不需要依靠泛型对象来

public class Main  {  
    public static void main(String[] args) {  
  
    String a=test("啊,确实");  
        System.out.println(a);  
    }  
    public static   <T> T test(T t){  
            return t;  
    }  
}

不是静态也可以
test里传的是什么类型,泛型就为什么类型

public class Main  {  
    public static void main(String[] args) {  
        Main main = new Main();  
        int a=main.test(13245);  
        System.out.println(a);  
  
    }  
    public <T>T test(T t){  
        return t;  
    }  
}
import java.util.Arrays;  
import java.util.Comparator;  
  
public class Main  {  
    public static void main(String[] args) {  
        //要实现数组的逆序  
        Integer []a={1,2,5,4,3,1,54,1,35,46,13346,1};  
     1   Arrays.sort(a, new Comparator<Integer>() {  //sort的第二个参数返回正数正序,返回负数逆序。  
            @Override  
            public int compare(Integer o1, Integer o2) {  
                return o2-o1;  
            }  
        });  
        System.out.println(Arrays.toString(a));  
        Arrays.sort(a,0,6);   //这是从0到6的数字排序  
  
        System.out.println(Arrays.toString(a));  
  
    }  
  
}

标签:java,String,value,类型,青空,泛型,public,name
From: https://www.cnblogs.com/ximenheiniu/p/17749581.html

相关文章

  • ts 中泛型的简单使用
    interfaceApiResponseData<T>{ code:number data:T message:string}在这段TypeScript代码中,T是一个泛型参数(genericparameter),用于描述ApiResponseData<T>的类型。泛型可以理解为是一种占位符,它能够让我们在定义函数或类型时先不确定具体的类型,而是让使用......
  • Java时间类型总结
    1.为什么需要新的时间类型1.8之后为什么需要LocalDate、LocalTime、LocalDateTime因为之前原生的Date如果不格式化,那么打印出来的日期可视化差,例如下面TueSep1009:34:04CST2019你会说使用SimpleDateFormat()方法,如下所示。publicclassFormatDateTime{publicst......
  • Java设计模式之享元模式
    1.1.概述定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 1.2.结构享元(Flyweight)模式中存在以下两种状态:1.内部状态,即不会随着环境的改变而改变的可......
  • Java 应用启动脚本
    启动代码java-server-Xms4g-Xmx4g-Xss256k-XX:NewSize=512m-XX:MaxNewSize=512m-XX:+UseG1GC-XX:InitiatingHeapOccupancyPercent=40-XX:G1HeapRegionSize=8m-XX:+ExplicitGCInvokesConcurrent-XX:ParallelGCThreads=4-Dsun.rmi.dgc.server.gcInterval=36000000-Ds......
  • Appium+JAVA+IDEA环境搭建
    1、Java环境配置(基础,不再描述)2、AndroidSDK安装   (1)下载地址:https://www.androiddevtools.cn/#sdk-tools(下载后解压即可)      (2)配置环境变量ANDROID_HOME      (3)添加到Path路径(platform-tools文件夹需要SDKManger安装后出现)      (4)c......
  • Java的反射机制
    Java的反射机制前言能够分析类能力的程序称为反射,反射机制可以用来:在运行程序时分析类的能力;在运行时检查对象;实现泛型数组操作代码;利用Method对象;Class类在程序运行期间,Java运行时系统始终为所有对象维护一个「运行时类型信息标识」。这个信息会跟踪每个对象所属的类,J......
  • java代码注释和空行删除,软著源码
    notepad++替换,结合正则表达式处理匹配//单行注释//.*匹配/**多行注释*/注意需要非贪婪模式,所以有一个?使用/\*{2}[\s\S]*?\*/匹配空行^\s*\n上面多行注释的匹配,需要非贪婪模式如果没有那个问号,将会把这一整块都匹配进去,第一块多行注释的头/**和最后一个多行注释......
  • mybatis出现错误 java lang NumberFormatException:For input string:A1
    使用mybatis,当使用map传参并且在iftest判断时使用map中所传的参数时,可能会产生如题的报错,具体报错信息见下图:分析这个错误,自己调试也找过度娘,“坚信”自己代码并没问题,但是问题始终无法解决。最后在一个帖子看到说iftest判断时,传入的参数跟匹配的值类型必须一致,于是调整了自己代......
  • JavaScript实现大文件分片上传处理
    我可以为你讲解如何实现JavaScript实现大文件分片上传处理,以下是具体的攻略步骤:步骤1:选择文件在实现大文件分片上传之前,第一步需要让用户选择一个文件。你可以在页面上加入一个文件选择表单,如下所示:<inputtype="file"name="file"id="file">步骤2:对文件进行分片处理当用户......
  • Java 队列Queue的一些基本操作与概念!!!!!!!!
    首先Java中的队列(Queue)是一种先进先出的数据结构。其中常见的一些基本操作与方法,包括:1、创建队列对象。例如:ArrayDeque、LinkedList等。2、入队操作。将元素添加到队列的末尾处,使用offer()方法。3、出队操作。从队列的头部移除并返回元素,使用poll()方法。......