本文概述
- Java类型推断示例
- Java类型推断示例2
Java在Java 8中提供了类型推断的改进版本。以下示例说明了如何在代码中使用类型推断:
在这里, 我们通过在两边都明确提到整数类型来创建arraylist。以下方法用于Java的早期版本。
List<
Integer>
list = new ArrayList<
Integer>
();
在下面的声明中, 我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里, 你可以将第二面留为空白菱形, 并且编译器将通过引用变量的类型来推断其类型。
List<
Integer>
list2 = new ArrayList<
>
();
改进的类型推断
在Java 8中, 你可以调用专用方法而无需明确提及参数的类型。
showList(new ArrayList<
>
());
Java类型推断示例你可以对通用类和方法使用类型推断。
import java.util.ArrayList;
import java.util.List;
public class TypeInferenceExample {
public static void showList(List<
Integer>
list){
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<
Integer>
list1 = new ArrayList<
Integer>
();
list1.add(11);
showList(list1);
// Java 7
List<
Integer>
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类型推断】你还可以创建自己的自定义通用类和方法。在下面的示例中, 我们将创建自己的通用类和方法。
Java类型推断示例2
class GenericClass<
X>
{
X name;
public void setName(X name){
this.name = name;
}
public X getName(){
returnname;
}
public String genericMethod(GenericClass<
String>
x){
x.setName("John");
returnx.name;
}
}public class TypeInferenceExample {
public static void main(String[] args) {
GenericClass<
String>
genericClass = new GenericClass<
String>
();
genericClass.setName("Peter");
System.out.println(genericClass.getName());
GenericClass<
String>
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