深入理解java1.8之supplier
supplier也是是用來創(chuàng)建對象的,但是不同于傳統(tǒng)的創(chuàng)建對象語法:new,看下面代碼:
public class TestSupplier { private int age; TestSupplier(){ System.out.println(age); } public static void main(String[] args) { //創(chuàng)建Supplier容器,聲明為TestSupplier類型,此時并不會調(diào)用對象的構造方法,即不會創(chuàng)建對象 Supplier<TestSupplier> sup= TestSupplier::new; System.out.println("--------"); //調(diào)用get()方法,此時會調(diào)用對象的構造方法,即獲得到真正對象 sup.get(); //每次get都會調(diào)用構造方法,即獲取的對象不同 sup.get(); } }
輸出結果:
--------
0
0
官方代碼及注釋:
/** * Represents a supplier of results. * * <p>There is no requirement that a new or distinct result be returned each * time the supplier is invoked. * * <p>This is a <a href="package-summary.html" rel="external nofollow" >functional interface</a> * whose functional method is {@link #get()}. * * @param <T> the type of results supplied by this supplier * * @since 1.8 */ @FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); }
根據(jù)代碼和官方注釋,我的個人理解:
1.supplier是個接口,有一個get()方法
2.語法 :
Supplier<TestSupplier> sup= TestSupplier::new;
3.每次調(diào)用get()方法時都會調(diào)用構造方法創(chuàng)建一個新對象。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
基于Spring Boot不同的環(huán)境使用不同的配置方法
下面小編就為大家分享一篇基于Spring Boot不同的環(huán)境使用不同的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01詳解如何為SpringBoot項目中的自定義配置添加IDE支持
這篇文章主要介紹了詳解如何為SpringBoot項目中的自定義配置添加IDE支持,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02Java Maven settings.xml中私有倉庫配置詳解
這篇文章主要介紹了詳解Maven settings.xml配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-10-10簡單了解Java多態(tài)向上轉(zhuǎn)型相關原理
這篇文章主要介紹了簡單了解Java多態(tài)向上轉(zhuǎn)型相關原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12解釋為什么Java中“1000==1000”為false而”100==100“為true
在日常編程中,我們經(jīng)常遇到一些看似簡單卻隱藏著復雜邏輯的問題,這篇文章主要介紹了解釋為什么Java中“1000==1000”為false而”100==100“為true,需要的朋友可以參考下2024-01-01