【装包拆包----泛型】

简介: 【装包拆包----泛型】

装箱和拆箱


装箱:


基本数据类型给到引用数据类型

    public static void main(String[] args) {
        //自动装包
        //第一种装包
        Integer c = 12;
        //第二种装包
        int a = 7;
        Integer b = a;
        //显示装包
        Integer aa = Integer.valueOf(10);
    }


拆箱:


把包装类型给到基本引用数据类型

    public static void main(String[] args) {
        //自动拆包
        Integer a = 10;
        int b = a;
        //显示拆包
        int aa = a.intValue();
    }


泛型


含义:泛型:就是适用于许多许多类型。


语法:


泛型只能接受包装类


创建一个泛型数组


实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值

//类名后的 <T> 代表占位符,表示当前类是一个泛型类
class MyArray<T>{
    //泛型数组
    public Object[] array =new Object[10];
    public void setArray(int pos,T val) {
       array[pos] = val;
    }
    public T getArray(int pos){
        return (T)array[pos];
    }
}
public class Test {
    public static void main(String[] args) {
    //类型后加入 <Integer> 指定当前类型
        MyArray <Integer> myArray = new <Integer>MyArray();
        myArray.setArray(0,7);
        myArray.setArray(1,10);
        int a = myArray.getArray(1);
        System.out.println(a);
        MyArray <String> myArray1 = new <String>MyArray();
        myArray1.setArray(0,"jiujiu");
        myArray1.setArray(1,"happy");
        String str = myArray1.getArray(1);
        System.out.println(str);
    }
}


注意:


不能new一个泛型类型的数组


泛型的上界


//T只能是Number或者Numberd的子类
class FanXing<T extends Number>{
}
class Person{
//父类
}
class Student extends Person{
    //子类
}
//T只能是Person或者Person的子类
class FanXing2<T extends Person>{
}
public class Test {
    FanXing <Integer> fanXing = new <Integer> FanXing();
    FanXing <Double> fanXing2 = new <Integer> FanXing();
    //报错
    FanXing <String> fanXing3 = new <Integer> FanXing();
    //String不是Numberd的子类
    FanXing2 <Student> fanXing4 = new <Student> FanXing2();
    FanXing2 <Person> fanXing5 = new <Person> FanXing2();
}


泛型方法


class Person implements Comparable<Person>{
    @Override
    public int compareTo(Person o) {
        return 0;
    }
}
class Alg<T extends  Comparable<T>>{
    public T findMaxValue(T[] array){
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i])<0){
                max = array[i];
            }
        }
        return max;
    }
}
//泛型方法
class Alg2{
    public<T extends  Comparable<T>>T findMaxValue(T[] array){
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i])<0){
                max = array[i];
            }
        }
        return max;
    }
}
public class Test {
    public static void main(String[] args) {
        Alg<Integer> alg = new Alg<Integer>();
        Integer[] integer={1,2,3,4,5,6,7};
        Integer ret = alg.findMaxValue(integer);
        System.out.println(ret);
         //泛型方法实例化
        Alg2 alg2 =new Alg2();
        Integer[] integer1 = {1,2,3,4,5,6,7,8};
        Integer ret2 = alg2.findMaxValue(integer1);
        System.out.println(ret2);
    }
}
相关文章
|
7月前
|
安全 Java 编译器
Java集合框架-------泛型
Java集合框架-------泛型
|
6天前
|
存储 Java fastjson
Java泛型-4(类型擦除后如何获取泛型参数)
Java泛型-4(类型擦除后如何获取泛型参数)
33 1
|
6天前
泛型是什么?有什么作用
当我们定义一个变量不确定类型的时候有两种解决方式
20 0
泛型是什么?有什么作用
|
6天前
|
Java Go
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项
|
6天前
|
设计模式 安全 Java
详解Java中的泛型(泛型的语法,擦除机制,泛型的上界)
详解Java中的泛型(泛型的语法,擦除机制,泛型的上界)
68 0
|
安全 Java 容器
Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用
Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用
131 0
Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用
|
Linux
扩展知识点-----数据封装的使用方法
扩展知识点-----数据封装的使用方法
57 0
|
C#
30天C#基础巩固----Lambda表达式
30天C#基础巩固----Lambda表达式
86 0
30天C#基础巩固----Lambda表达式
|
安全 Java
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )(二)
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )(二)
100 0
|
安全 Java
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )(一)
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )(一)
126 0
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )(一)