补充图片

This commit is contained in:
Dragon
2020-10-19 23:10:58 +08:00
parent ed3a5abe0e
commit 36e0f0f6e0
9 changed files with 428 additions and 240 deletions

View File

@@ -1,3 +1,22 @@
---
title: 详解JDK8新特性
tags:
- Java8
- JDK8
- 新特性
categories:
- Java
- 新特性
keywords: Java8新特性JDK8
description: 详解JDK8出现的新特性。
cover: 'https://cdn.jsdelivr.net/gh/youthlql/lql_img/Java_Basis/javabasis_logo.png'
top_img: 'https://cdn.jsdelivr.net/gh/youthlql/lql_img/blog/top_img.jpg'
abbrlink: de3879ae
date: 2020-10-19 22:15:58
---
# Java8新特性纵览
> 本篇文章只讲解比较重要的
@@ -1456,7 +1475,7 @@ public class SuperClass {
```
```java
public interface CompareB {
default void method3(){

View File

@@ -1,3 +1,22 @@
---
title: 详解JDK8新特性
tags:
- Java
- 基础
- 泛型
categories:
- Java
- 新特性
keywords: Java基础泛型
description: 万字长文详解Java泛型。
cover: 'https://cdn.jsdelivr.net/gh/youthlql/lql_img/Java_Basis/javabasis_logo.png'
top_img: 'https://cdn.jsdelivr.net/gh/youthlql/lql_img/blog/top_img.jpg'
abbrlink: de3879ae
date: 2020-10-19 22:21:58
---
# 简介
## 泛型的优点
@@ -10,7 +29,7 @@
那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。
```
```java
public class GlmapperGeneric<T> {
private T t;
public void set(T t) { this.t = t; }
@@ -642,28 +661,30 @@ Process finished with exit code 0
即:**如果静态方法要使用泛型的话,必须将静态方法也定义成泛型方法** 。
public class StaticGenerator<T> {
/**
* 1、如果在类中定义使用泛型的静态方法需要添加额外的泛型声明将这个方法定义成泛型方法
* 即使静态方法要使用泛型类中已经声明过的泛型也不可以。
*public static void show(T t){..},此时编译器会提示错误信息:
"StaticGenerator cannot be refrenced from static context"
* 2、泛型方法在方法中出现了泛型的结构泛型参数与类的泛型参数没有任何关系。换句话说
* 泛型方法所属的类是不是泛型类都没有关系。
* 3、泛型方法可以声明为静态的。原因泛型参数是在调用方法时确定的。并非在初始化类时确定,所以无所谓
*/
public static <E> List<E> copyFromArrayToList(E[] arr){
ArrayList<E> list = new ArrayList<>();
for(E e : arr){
list.add(e);
}
return list;
```java
public class StaticGenerator<T> {
/**
* 1、如果在类中定义使用泛型的静态方法需要添加额外的泛型声明将这个方法定义成泛型方法
* 即使静态方法要使用泛型类中已经声明过的泛型也不可以。
* 如public static void show(T t){..},此时编译器会提示错误信息:
"StaticGenerator cannot be refrenced from static context"
* 2、泛型方法在方法中出现了泛型的结构泛型参数与类的泛型参数没有任何关系。换句话说
* 泛型方法所属的类是不是泛型类都没有关系。
* 3、泛型方法可以声明为静态的。原因泛型参数是在调用方法时确定的。并非在初始化类时确定,所以无所谓
*/
public static <E> List<E> copyFromArrayToList(E[] arr){
ArrayList<E> list = new ArrayList<>();
for(E e : arr){
list.add(e);
}
return list;
}
}
```
@@ -1565,7 +1586,7 @@ class keyAndDifficultPoints/principle/Test_Generic1 {
如果顺序变一下
```
```java
class Test_Generic1<T extends Collection & List>
```
@@ -1573,7 +1594,7 @@ class Test_Generic1<T extends Collection & List>
T变成了Collection
```
```java
// class version 52.0 (52)
// access flags 0x20
// signature <T::Ljava/util/Collection;:Ljava/util/List;>Ljava/lang/Object;
@@ -1798,7 +1819,7 @@ test4(queue);
在调用泛型方法的时候,可以指定泛型,也可以不指定泛型。在不指定泛型的情况下,泛型变量的类型为 该方法中的几种类型的同一个父类的最小级直到Object。在指定泛型的时候该方法中的几种类型必须是该泛型实例类型或者其子类。
```
```java
class Test {
public static void main(String[] args) {
//不指定泛型的时候