第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

匿名內(nèi)部類是如何在Java中使用的?

匿名內(nèi)部類是如何在Java中使用的?

匿名內(nèi)部類是如何在Java中使用的?在Java中匿名類的用途是什么?我們可以說使用匿名類是Java的優(yōu)勢之一嗎?
查看完整描述

4 回答

?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個贊

匿名內(nèi)部類實(shí)際上是閉包,因此可以用來模擬lambda表達(dá)式或“委托”。例如,以這個接口為例:

public?interface?F<A,?B>?{
???B?f(A?a);}

您可以使用此匿名創(chuàng)建一級函數(shù)在爪哇。假設(shè)您有以下方法,它返回比給定列表中的我大的第一個數(shù)字,或者如果沒有更大的數(shù)字,則返回我:

public?static?int?larger(final?List<Integer>?ns,?final?int?i)?{
??for?(Integer?n?:?ns)
?????if?(n?>?i)
????????return?n;
??return?i;}

然后,有另一個方法返回比給定列表中的我小的第一個數(shù)字,或者,如果沒有更小的數(shù)字,則返回I:

public?static?int?smaller(final?List<Integer>?ns,?final?int?i)?{
???for?(Integer?n?:?ns)
??????if?(n?<?i)
?????????return?n;
???return?i;}

這些方法幾乎是相同的。使用第一類函數(shù)類型F,我們可以將它們重寫為一個方法,如下所示:

public?static?<T>?T?firstMatch(final?List<T>?ts,?final?F<T,?Boolean>?f,?T?z)?{
???for?(T?t?:?ts)
??????if?(f.f(t))
?????????return?t;
???return?z;}

您可以使用匿名類來使用FirstMatch方法:

F<Integer,?Boolean>?greaterThanTen?=?new?F<Integer,?Boolean>?{
???Boolean?f(final?Integer?n)?{
??????return?n?>?10;
???}};int?moreThanMyFingersCanCount?=?firstMatch(xs,?greaterThanTen,?x);

這是一個精心設(shè)計的例子,但很容易看出,能夠像傳遞值一樣傳遞函數(shù)是一個非常有用的特性。

查看完整回答
反對 回復(fù) 2019-05-30
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個贊

匿名內(nèi)部類用于以下場景:

1.)用于重寫(子類),當(dāng)類定義除當(dāng)前情況外不可用時:

class A{
   public void methodA() {
      System.out.println("methodA");
    }}class B{
    A a = new A() {
     public void methodA() {
        System.out.println("anonymous methodA");
     }
   };}

2.為實(shí)現(xiàn)接口,如果只需要在當(dāng)前情況下實(shí)現(xiàn)接口:

interface interfaceA{
   public void methodA();}class B{
   interfaceA a = new interfaceA() {
     public void methodA() {
        System.out.println("anonymous methodA implementer");
     }
   };}

3.定義匿名內(nèi)部類的參數(shù):

 interface Foo {
   void methodFoo();
 }
 class B{
  void do(Foo f) { }}class A{
   void methodA() {
     B b = new B();
     b.do(new Foo() {
       public void methodFoo() {
         System.out.println("methodFoo");
       } 
     });
   } 
 }


查看完整回答
反對 回復(fù) 2019-05-30
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊

我有時將它們用作Map實(shí)例化的語法黑客:

Map map = new HashMap() {{
   put("key", "value");}};

VS

Map map = new HashMap();map.put("key", "value");

它在執(zhí)行大量PUT語句時節(jié)省了一些冗余。但是,當(dāng)外部類需要通過遠(yuǎn)程處理序列化時,我也遇到了一些問題。


查看完整回答
反對 回復(fù) 2019-05-30
  • 4 回答
  • 0 關(guān)注
  • 1747 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號