美文网首页
深入理解Java中的泛型(四)泛型方法的创建以及类型推断

深入理解Java中的泛型(四)泛型方法的创建以及类型推断

作者: 不思进取的码农 | 来源:发表于2021-08-31 18:54 被阅读0次

泛型方法

泛型方法的误区

public T getValue2(){
    return value2;
}

很多人认为上述代码是个泛型方法 其实不是的,作为一个Android开发者我们有一个最常见的泛型方法findViewById

 @Nullable
 public final <T extends View> T findViewById(@IdRes int id) {
   if (id == NO_ID) { 
       return null;  
    }
   return findViewTraversal(id);
 }

常见的泛型方法的声明方式:

public <T extends View> T get(T t);
public <T extends View> void get(T t);
public <T,E> void get(T t,E e);

<>里面是对参数t的约束和对类型T的声明,例如<T extends View>声明了一种类型T,且T是View的子类,然后根据传入的参数做一些处理,这里T的意义是在于对参数T t的约束和声明,任何View的子类都可以作为参数传进来进行处理。
例如:

ImageView img = findViewById(R.id.img);

解谜:findViewById()其实并不能根据一个ID返还给你一个对的类型,什么意思呢?假设下面这两行代码都能编译通过并且运行

ImageView img = findViewById(R.id.img);
Button button= findViewById(R.id.img);

这两行代码在编译后会是这个样子的:

ImageView img = (ImageView)findViewById(R.id.img);
Button button= (Button)findViewById(R.id.img);

上面的例子也就是说该方法不知道你要什么,只是使用了泛型(T) this进行了强制类型转换,告诉编译器在编译的时候该方法返回的是一个泛型类型,要进行类型转换,明显,强转为Button的时候程序在运行时会崩溃。

泛型的类型推断

在之前Android开发中,需要在声明并赋值的时候,两侧都加上泛型类型。比方说这样:

Map<String,Integer> map = new HashMap<String,Integer>(); 

而现在开发时

Map<String,Integer> map = new HashMap<>();

而这也就是类型推断带来的简便效果

相关文章

  • 深入理解Java中的泛型(四)泛型方法的创建以及类型推断

    泛型方法 泛型方法的误区 很多人认为上述代码是个泛型方法 其实不是的,作为一个Android开发者我们有一个最常见...

  • 泛型

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一Java泛型深入理解加泛型面试数组的协变性与范型的不可变性

  • Java泛型:类型擦除

    前情回顾 Java泛型:泛型类、泛型接口和泛型方法 类型擦除 代码片段一 显然在平时使用中,ArrayList (...

  • 泛型学习

    1.泛型是Java中参数化类型的方式。将类型也作为一种参数进行传递。2.它有泛型的方法,泛型参数,泛型类。3.泛型...

  • Java泛型教程

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

  • Java泛型总结

    Java泛型总结# 泛型是什么## 从本质上讲,泛型就是参数化类型。泛型十分重要,使用该特性可以创建类、接口以及方...

  • [Android每日精彩]Java8新特性

    函数式接口 默认方法 解开lambda最强作用的神秘面纱 类型注解 重复注解 Java8的泛型类型推断改进 深入解...

  • Dart 泛型 泛型方法 泛型类 泛型接口

    通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 1.定义一个泛型,泛型方法...

  • Kotlin学习笔记-其他

    一.泛型 在使用java的泛型时候,下面的代码无法通过编译的。因为为了泛型的类型安全,Java 中的泛型类型是 不...

  • 深入理解 Java 泛型

    [TOC] 深入理解 Java 泛型 概述 泛型的本质是参数化类型,通常用于输入参数、存储类型不确定的场景。相比于...

网友评论

      本文标题:深入理解Java中的泛型(四)泛型方法的创建以及类型推断

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