找到 4330 篇文章 關於 Java 8

如何在 Java 中使用泛型方法引用?

raja
更新於 2020年7月11日 12:25:52

777 次檢視

方法引用在 Java 8 中引入,類似於 lambda 表示式。它允許我們引用方法或建構函式,而無需執行它們。方法引用和 lambda 表示式需要一個目標型別,該型別包含一個相容的功能介面。我們還可以將方法引用與 Java 中的泛型類和泛型方法一起使用。示例介面 MyFunc {    int func(T[] vals, T v); } 類 MyArrayOps {    靜態 int countMatching(T[] vals, T v) {       int count = 0;       對於 (int i=0; i < vals.length; i++)          如果 (vals[i] == v)             count++;       返回 count;   ... 閱讀更多

什麼是 Java 中的泛型函式介面?

raja
更新於 2020年7月11日 12:23:09

3K+ 次檢視

lambda 表示式不能指定型別引數,因此它不是泛型的。但是,與 lambda 表示式關聯的功能介面是泛型的。在這種情況下,lambda 表示式的目標型別由宣告功能介面引用時指定的引數型別確定。語法介面 SomeFunc {  T func(T t); }示例介面 MyGeneric {    T compute(T t); } 公共類 LambdaGenericFuncInterfaceTest {    公共靜態 void main(String args[]) {       MyGeneric reverse = (str) -> {   // Lambda 表示式          String result = "";          對於 (int i = str.length()-1; i >= 0; i--)           ... 閱讀更多

Java 中 lambda 表示式中區域性變數的規則是什麼?

raja
更新於 2020年7月11日 11:57:48

4K+ 次檢視

lambda 表示式可以捕獲變數,如區域性變數和匿名類。換句話說,它們對封閉作用域的區域性變數具有相同的訪問許可權。在 lambda 表示式中使用區域性變數時,我們需要遵循一些規則。lambda 表示式不能像匿名內部類那樣定義任何新的作用域,因此我們不能宣告與 lambda 表示式封閉作用域中已宣告的區域性變數相同的區域性變數。在 lambda 表示式內部,我們不能為在 lambda 表示式外部宣告的某些區域性變數分配任何值。因為在 lambda 表示式外部宣告的區域性變數可以是 final 或有效 final。規則 ... 閱讀更多

如何在 Java 中的 lambda 表示式中使用 ArrayList?

raja
更新於 2020年7月11日 11:40:27

2K+ 次檢視

lambda 表示式是在不建立匿名類的情況下實現功能介面的內聯程式碼。ArrayList 可用於儲存動態大小的元素集合。在下面的程式中,我們使用 removeIf() 方法刪除了年齡小於或等於 20 的 ArrayList 元素。此方法在 Java 8 版本中引入,用於刪除滿足條件的集合中的所有元素。語法public boolean removeIf(Predicate filter) 引數 filter 是一個 Predicate。如果給定的謂詞滿足條件,則可以刪除該元素。此方法在刪除元素時返回布林值 true,否則返回 false。示例匯入 java.util.*; ... 閱讀更多

如何在 Java 中的方法引用中使用 this 和 super 關鍵字?

raja
更新於 2020年7月11日 08:55:49

912 次檢視

方法引用類似於 lambda 表示式,它引用方法而不執行它,並且“::”運算子可用於在方法引用中分隔方法名稱和物件或類的名稱。可以使用 this 和 super 關鍵字在 Java 中引用方法。super 關鍵字可用作限定符,以在類或介面中呼叫被覆蓋的方法。語法this::instanceMethod TypeName.super::instanceMethod示例匯入 java.util.function.Function; 介面 Defaults {    預設 int doMath(int a) {       返回 2 * a;    } } 公共類 Calculator 實現 Defaults { ... 閱讀更多

什麼是 Java 中 lambda 表示式的目標型別?

raja
更新於 2020年7月11日 08:30:22

2K+ 次檢視

為 lambda 表示式呼叫的功能介面稱為 lambda 表示式的目標型別。這意味著如果為某個“X”介面呼叫了 lambda 表示式,則“X”是該 lambda 表示式的目標型別。因此,我們得出結論,lambda 表示式只能在 Java 編譯器可以確定目標型別的情況下使用。在下面的示例中,lambda 表示式的目標型別是 BiFunction。會自動建立一個實現功能介面的類的例項,並且 lambda 表示式提供了功能介面宣告的抽象方法的實現。示例介面 BiFunction { ... 閱讀更多

在 Java lambda 表示式中使用異常時需要遵循哪些規則?

raja
更新於 2019年12月20日 08:36:16

3K+ 次檢視

lambda 表示式本身無法執行。它用於實現功能介面中宣告的方法。為了在 lambda 表示式中使用異常處理機制,我們需要遵循一些規則。lambda 表示式的規則lambda 表示式不能丟擲任何已檢查異常,除非其對應的功能介面聲明瞭 throws 子句。lambda 表示式丟擲的異常可以與其功能介面的 throws 子句中宣告的異常型別相同或為其子型別。示例-1介面 ThrowException { void throwing(String message); } 公共類 LambdaExceptionTest1 { ... 閱讀更多

如何在 Java 中將 lambda 表示式作為方法引數傳遞?

raja
更新於 2019年12月19日 13:09:20

7K+ 次檢視

lambda 表示式是 Java 中的匿名或未命名方法。它本身不會執行,而是用於實現功能介面中宣告的方法。如果要將 lambda 表示式作為方法引數傳遞到 Java 中,則接收方法引數的型別必須為功能介面型別。示例介面 Algebra { int operate(int a, int b); } 列舉 Operation { ADD, SUB, MUL, DIV } 公共類 LambdaMethodArgTest { 公共靜態 void main(String[] args) { print((a, b) -> ... 閱讀更多

如何在 Java 中的 lambda 表示式中編寫條件表示式?

raja
更新於 2020年7月11日 07:48:12

3K+ 次檢視

條件運算子用於在 Java 中建立條件表示式。它也稱為三元運算子,因為它有三個運算元,例如布林條件、第一個表示式和第二個表示式。我們還可以在下面的程式中在 lambda 表示式中編寫條件表示式。示例介面 Algebra {    int substraction(int a, int b); } 公共類 ConditionalExpressionLambdaTest {    公共靜態 void main(String args[]) {       System.out.println("The value is: " + getAlgebra(false).substraction(20, 40));       System.out.println("The value is: " + getAlgebra(true).substraction(40, 10));    }    靜態 Algebra getAlgebra(boolean reverse) {       Algebra alg = reverse ... 閱讀更多

什麼是 Java 中的強制轉換表示式?

raja
更新於 2020年7月11日 07:40:37

660 次瀏覽

強制轉換表示式提供了一種機制,可以在無法從上下文中方便地推斷 lambda 表示式的型別時顯式提供該型別。當方法宣告過載了不相關的函式式介面型別時,它也很有用。語法Object o = () -> { System.out.println("TutorialsPoint"); }; // 非法:Object o = (Runnable) () -> { System.out.println("TutorialsPoint"); }; // 合法示例interface Algebra1 {    int operate(int a, int b); } interface Algebra2 {    int operate(int a, int b); } public class LambdaCastingTest {    public static void main(String[] args) {       printResult((Algebra1)(a, b) -> a + b);  // 強制轉換表示式 ... 閱讀更多

廣告
© . All rights reserved.