在匿名內部類中宣告比較器
1.java本身的集合有著Collections.sort
2.陣列有Array.sort
3.重寫比較器
在集合中,例如List<Student> list這種物件,需要要按照student的考試分數排序,可以直接讓student類實現comparable介面,重寫比較器。或者直接寫一個類,裡面寫比
較器,在sort(list,comparetor)呼叫,為了節省編寫程式碼時間和行數,也可以使用內部類的方式寫比較器,如下
Collections.sort(list, new Comparator<Student>() {public int compare(Student o1, Student o2) {
return o2.getId() - o1.getId();
};});
注意,這裡的Comparator是一個介面,但是java中允許匿名內部類直接new一個介面,以為匿名內部類沒有類名沒有構造器,會直接實現介面中的,所以要重寫介面的抽象方法,
且方法必須是public的,此外可能還有些其他需要注意的。另,匿名內部類應該也可以new抽象類。
相關推薦
在匿名內部類中宣告比較器
1.java本身的集合有著Collections.sort 2.陣列有Array.sort 3.重寫比較器 在集合中,例如List<Student> list這種物件,需要要按照student的考試分數排序,可以直接讓student類實現comparable介
匿名內部類中的構造器問題
今天遇到了一個題,涉及到匿名內部類的構造器問題,起初想當然地認為,匿名內部類連名字都沒有,怎麼可能有構造器,但是一經過測試,傻眼了。原來在匿名內部類中的構造程式碼塊充當了構造器的作用。光說無益,上程式碼。 Student類 public class Student { private St
Java匿名內部類中使用外部類方法的形參或區域性變數必須宣告為final
對於這個問題,首先我們應該明確的一點是對於匿名內部類,它可能引用三種外部變數:外部類的成員變數外部方法或作用域內的區域性變數外部方法的引數而第一種變數是不需要宣告為final的,但後兩種是需要宣告為final的。那這是為什麼呢?不急,我們首先來看第一個知識點。知識點一,匿名內部類同所有類一
匿名內部類中關於new Runnable()的使用
匿名內部類也就是沒有名字的內部類,正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化程式碼編寫。但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個介面1、繼承一個父類的匿名內部類實現:a
匿名內部類中this的使用問題
大多數情況下,我在對Android的事件處理方式都是用的基於監聽的事件處理方式。在這當中,一般都會涉及到事件監聽器這樣一個類。大部分的時候,事件監聽器都沒有什麼複用價值,因此大部分的事件監聽器只是臨時使用一次,所以使用匿名內部類形式的事件監聽器更合適。實際上,這
Java匿名內部類中this的小知識(待補充完整)
今日在看到Enumeration 藉口的原始碼時發現,Enumeration 介面的asIterator 方法返回了一個迭代器,並使用匿名內部類(實現介面的匿名內部類)。對迭代器中的方法進行了實現 default Iterator<E> a
字串的連線最長路徑查詢(使用TreeSet集合的比較器new Comparator(){ }:匿名內部類方法)
按照字串的字典順序比較,且不去重 import java.util.Comparator; import java.util.Scanner; import java.util.TreeSet;
JavaSE8基礎 多線程 匿名內部類既重寫Thread中run,又實現Runnable中run
run compile 去掉 思考 release mpi window generate fix 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三返一,活水清源藏於零。 虛懷若谷良心主,皓月當空自在王。願給最苦行無悔,誠勸且行且珍
java中的匿名內部類總結
但是 star per 處的 書寫 括號 art log num 匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口 實例1:不使用匿名內部類來實現抽象方法
java中的匿名內部類
匿名內部類/* 知識點:匿名內部類 作用: 匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口 */ //抽象類 abstract class Person {
Java中,匿名內部類
java () ack http 代碼 一個 back 抽象 子類 匿名內部類 就是局部內部類的簡化寫法。 前提:存在一個類或者接口。 這裏的類可以是具體類也可以是抽象類。 格式: new 類名或者接口名() { 重寫方法; }
Java中的內部類、匿名類、匿名內部類
內部類 Java中在一個類的內部定義的類叫做內部類(inner class)。建立一個內部類時,其物件就擁有了與外部類物件之間的關係。這種通過this來引用形成的,是內部類物件可以隨意訪問外部類中的所有成員變數!(因為被private修飾的成員變數和成員方法僅能被該類所使用,內部類中可以
kotlin中實現匿名內部類
匿名內部類 anim err ner upd .net blog validate animation 1.常規的方式實現匿名內部類 valueAnimator.addUpdateListener(object :AnimatorUpdateListener { ov
Java中的匿名內部類及其使用技巧
轉載地址: https://blog.csdn.net/tick_tock97/article/details/76944566 前言 在介紹匿名內部類之前,首先我們應該先來了解一下內部類及區域性內部類: 內部類 內部類(inner class)是定義在另一個類中的類,
java中匿名內部類總結
匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化程式碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個介面 例項1:不使用匿名內部類來實現抽象方法 abstract class Person { public a
【Java】從內部類中訪問變數,需要宣告為final
Cannot refer to a non-final variable ‘result’ inside an inner class defined in a different method 從內部類中訪問變數’result’,需要宣告為final 這
內部類、匿名內部類、內部介面比較
目錄 一、什麼是內部介面? 內部介面也稱為巢狀介面,即在一個介面內部定義另一個介面,Entry介面定義在Map接口裡面,如下程式碼: public interface Map{ interface Entry{ int g
Java進階(四十二)Java中多執行緒使用匿名內部類的方式進行建立3種方式
Java中多執行緒使用匿名內部類的方式進行建立3種方式 package cn.edu.ujn.demo; // 匿名內部類的格式: public class ThreadDemo {
匿名內部類實現多執行緒,內部類呼叫外部方法中定義的變數
package Test; import java.util.Date; public class MyTread { /** * @author peter * @d
【轉】匿名內部類在多執行緒Callable中的使用小結
對於匿名內部類的使用它是存在一個缺陷的,就是它僅能被使用一次,建立匿名內部類時它會立即建立一個該類的例項,該類的定義會立即消失,所以匿名內部類是不能夠被重複使用。對於上面的例項,如果我們需要對test()方法裡面內部類進行多次使用,建議重新定義類,而不是使用匿名內部類。