VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java String

Các Tính Năng Mới Trong Java

Giới thiệu về các tính năng mới trong java

Java 8

Biểu thức Lambda Ví dụ biểu thức Lambda với forEach() Ví dụ biểu thức Lambda với Thread Ví dụ biểu thức Lambda với Comparator Ví dụ biểu thức Lambda với Filter Collection Data Toán tử dấu 2 chấm (::) StringJoiner forEach Base64 Encode và Decode Stream trong java 8

Java 7

Binary Literal String trong mệnh đề Switch Catch nhiều ngoại lệ Lệnh try-with-resources Suy luận tạo đối tượng Generic Chữ số Java với dấu gạch dưới Các cải tiến JDBC của Java 7

Java 4/5

Varargs trong Java Enum trong java For-Each trong java Static Import trong java Autoboxing và Unboxing trong java Annotation trong java Tùy chỉnh Annotation trong java Generics trong java
Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Toán tử dấu 2 chấm (::) trong Java 8


Lambda Expression - Biểu thức Lambda trong java 8
forEach() trong java 8

Nội dung chính

  • Toán tử dấu 2 chấm (::) trong Java
  • Ví dụ toán tử dấu 2 chấm (::) trong Java

Toán tử dấu 2 chấm (::) trong Java

Toán tử dấu 2 chấm (::) trong Java hay còn được gọi là toán tử tham chiếu phương thức trong java. Nó được sử dụng để gọi một phương thức của một lớp khác (cung cấp bản cài đặt cho phương thức trừu tượng của một Functional Interface).

Nó giống như biểu thức lambda. Chỉ khác nhau ở chỗ đó là toán tử :: tham chiếu đến phương thức bởi tên của phương thức.

Biểu thức Lambda cung cấp bản cài đặt cho Functional Interface. Một interface chỉ có MỘT phương thức trừu tượng được gọi là Functional Interface. Xem thêm tại Lambda Expression - Biểu thức Lambda trong java 8 .


Ví dụ toán tử dấu 2 chấm (::) trong Java

Tạo một FunctionalInterface chỉ có một phương thức trừu tượng accept().


package vn.viettuts.lambda;

@FunctionalInterface
public interface MyFunction {
    int accept(int a, int b);
}

Tạo lớp MyUtils có 2 phương thức add() và minus().


package vn.viettuts.lambda;

public class MyUtils {
    public static int add(int a, int b) {
        return a + b;
    }

    public static int minus(int a, int b) {
        return a - b;
    }
}

Tạo lớp App có 2 phương thức action() và main() để chạy ứng dụng. Hàm action() xử lý giá trị của tham số a và b, lúc này chúng ta chưa biết hàm accept(a,b) trả về giá trị gì vì nó chỉ là một hàm trừu tượng chưa có thân hàm. Chúng ta sẽ cung cấp thân hàm cho phương thức MyFunction.accept() trong hàm main().


package vn.viettuts.lambda;

public class App {
    /**
     * Xử lý giá trị của tham số a và b.
     * Lúc này chúng ta chưa biết hàm accept(a,b) trả về giá trị gì, 
     * vì nó chỉ là một hàm trừu tượng chưa có thân hàm.
     * Chúng ta sẽ cung cấp thân hàm cho phương thức MyFunction.accept() 
     * trong hàm main().
     */
    public int action(int a, int b, MyFunction func) {
        return func.accept(a, b);
    }

    public static void main(String[] args) {
        App app = new App();
        // tạo đối tượng nặc danh addFunc và cung cấp thân hàm cho hàm accept()
        // bây giờ hàm accept() sẽ có thân hàm giống như hàm MyUtils.add().
        // nghĩa là hệ thống copy hàm MyUtils.add() như một bản cài đặt 
        // cho hàm accept()
        MyFunction addFunc = MyUtils::add;
        int c1 = app.action(10, 2, addFunc);
        System.out.println("Tổng 2 số: " + c1);
        
        MyFunction minusFunc = MyUtils::minus;
        int c2 = app.action(10, 2, minusFunc);
        System.out.println("Hiệu 2 số: " + c2);
        
        MyFunction maxFunc = Math::max;
        int c3 = app.action(10, 2, maxFunc);
        System.out.println("MAX: " + c3);
        
        MyFunction minFunc = Math::min;
        int c4 = app.action(10, 2, minFunc);
        System.out.println("MIN: " + c4);
    }
}

Kết quả:

Tổng 2 số: 12
Hiệu 2 số: 8
MAX: 10
MIN: 2
Chú ý: khi sử dụng toán tử dấu 2 chấm (::) để tham chiếu phương thức. Lúc này phương thức trừu tượng của functional interface phải có số lượng và kiểu dữ liệu của các tham số PHẢI giống với phương thức của lớp được tham chiếu.

Lambda Expression - Biểu thức Lambda trong java 8
forEach() trong java 8

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Java Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaBài tập quản lý sinh viên trong JavaHashSet trong java

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml