java类型推导,Java类型推断

本文概述

类型推断是Java的一项功能, 它使编译器可以查看每个方法调用和相应的声明以确定参数类型。

Java在Java 8中提供了类型推断的改进版本。以下示例说明了如何在代码中使用类型推断:

在这里, 我们通过在两边都明确提到整数类型来创建arraylist。以下方法用于Java的早期版本。

List list = new ArrayList();

在下面的声明中, 我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里, 你可以将第二面留为空白菱形, 并且编译器将通过引用变量的类型来推断其类型。

List list2 = new ArrayList<>();

改进的类型推断

在Java 8中, 你可以调用专用方法而无需明确提及参数的类型。

showList(new ArrayList<>());

Java类型推断示例

你可以对通用类和方法使用类型推断。

import java.util.ArrayList;

import java.util.List;

public class TypeInferenceExample {

public static void showList(Listlist){

if(!list.isEmpty()){

list.forEach(System.out::println);

}else System.out.println("list is empty");

}

public static void main(String[] args) {

// An old approach(prior to Java 7) to create a list

List list1 = new ArrayList();

list1.add(11);

showList(list1);

// Java 7

List list2 = new ArrayList<>(); // You can left it blank, compiler can infer type

list2.add(12);

showList(list2);

// Compiler infers type of ArrayList, in Java 8

showList(new ArrayList<>());

}

}

输出:

11

12

list is empty

你还可以创建自己的自定义通用类和方法。在下面的示例中, 我们将创建自己的通用类和方法。

Java类型推断示例2

class GenericClass {

X name;

public void setName(X name){

this.name = name;

}

public X getName(){

returnname;

}

public String genericMethod(GenericClass x){

x.setName("John");

returnx.name;

}

}

public class TypeInferenceExample {

public static void main(String[] args) {

GenericClass genericClass = new GenericClass();

genericClass.setName("Peter");

System.out.println(genericClass.getName());

GenericClass genericClass2 = new GenericClass<>();

genericClass2.setName("peter");

System.out.println(genericClass2.getName());

// New improved type inference

System.out.println(genericClass2.genericMethod(new GenericClass<>()));

}

}

输出:

Peter

peter

John

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值