美文网首页程序员
java泛型解析

java泛型解析

作者: jimdear | 来源:发表于2020-05-17 22:02 被阅读0次
  1. 为什么需要泛型?
    如果我们写的程序, 都用固定类型的话,那么当类型需要发生变化的时候,我们很难去做扩容。 比如,一个类型是string的,你要变成class 对象,这时候,你就没辙了。

2.泛型有啥用呢?
贴下代码,很直观:


public class GenericDemo<T> {

        private T value;
 
        public T getValue() {
            return value;
        }

        public void setValue(T value) {
            this.value = value;
        }
        
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        GenericDemo  gen =new GenericDemo ();
        gen.setValue(123);
        System.out.print(gen.getValue());
            
    }

}

此处定义了一个泛型, 程序在print的时候, 不需要对相应的value参数进行关注, 只要关注其value值就可以了。 如果规定了相应的类型的话, 那么其set 的操作,如果传入int 类型的参数,则编译就通不过了。看到这,真感觉java 设计的真友好。

image.png

3.什么是泛型的上下界?
此处我个人理解,泛型的上下界,当你声明了其继承的类型,如果出现相应的非此类型的,参数,那么是不合法的,也就是说类型实参只准传入某种类型的父类或某种类型的子类。为泛型添加上边界,即传入的类型实参必须是指定类型的子类型。如图:


image.png

4.什么是泛型的通配符?
先上代码:


image.png

很明显,编译器报错了, 不能换相应类型,那么怎么弄呢?


通配符.png

此处的?就是通配符。贴上定义: 此处’?’是类型实参,而不是类型形参 。重要说三遍!此处’?’是类型实参,而不是类型形参 ! 此处’?’是类型实参,而不是类型形参 !再直白点的意思就是,此处的?和Number、String、Integer一样都是一种实际的类型,可以把?看成所有类型的父类。是一种真实的类型。可以解决当具体类型不确定的时候,这个通配符就是 ? ;当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能。那么可以用 ? 通配符来表未知类型。

5.如何理解java 泛型接口?
首先我们定义一个接口:


public interface Generator<T> {
    public T next();
}

然后我们在类中去实现这个接口:

public class GenericValue<T extends Integer> implements Generator<T>{
    private T value;
     
    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }

    public T next() {
        // TODO Auto-generated method stub
        return  getValue();
    }
    
}

然后我们在main程序中打印出来:

        GenericValue gen =new GenericValue();
        gen.setValue(123);
        System.out.println(gen.next());
        
image.png

用法其实和之前理解的是一样的, 此处就是接口而已, 而接口的定义就是把一些单独的操作抽离出来,让相应的类去实现相应操作。

  1. 如何提高?
    在平时写程序的时候,多利用java的泛型,比如写mvp的时候, 还有RXJAVA里,去分析他的用法,然后运用到自己的程序里面。

相关文章

  • Java泛型教程

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

  • java 泛型解析

    Java 泛型 1、泛型的精髓是什么 2、泛型方法如何使用 概述: 泛型在java中具有重要地位,在面向对象编程模...

  • Java泛型解析

    4、有界泛型 :是指 “ 上界通配符 (Upper Bounds Wildcards) ...

  • java泛型解析

    为什么需要泛型?如果我们写的程序, 都用固定类型的话,那么当类型需要发生变化的时候,我们很难去做扩容。 比如,一个...

  • JDK1.7 ConcurrentHashMap

    详细的解释 ↓漫画:什么是ConcurrentHashMap?Java泛型底层源码解析--ConcurrentHa...

  • 第二十八课:泛型

    泛型出现之前 泛型出现之后 Java深度历险(五)——Java泛型

  • Kotlin 泛型

    说起 kotlin 的泛型,就离不开 java 的泛型,首先来看下 java 的泛型,当然比较熟悉 java 泛型...

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

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

  • Java泛型

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

  • Java泛型—Java语法糖,只在编译有作用,编译后擦出泛型

    Java泛型—Java语法糖,只在编译有作用,编译后擦出泛型 在代码进入和离开的边界处,会处理泛型 Java泛型作...

网友评论

    本文标题:java泛型解析

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