Giới thiệu 2 keyword ít dùng trong java: static và default
Java
85
White

huydx viết ngày 05/04/2016

Gần đây tham gia một số dự án java của công ty hay gặp phải một số reserved word mà trước nay khá ít dùng, đó là staticdefault.

Static

Từ khoá static mình nhắc đến ở đây khác với static được dùng khi định nghĩa member field của class.
Cụ thể cách dùng nằm trong ví dụ dưới đây

public final class ServerBuilder {
....
    static {
        String value = System.getProperty("io.netty.eventLoopThreads", "0");
        final int fallbackDefaultNumWorkers = Runtime.getRuntime().availableProcessors() * 2;
        int defaultNumWorkers;
        try {
            defaultNumWorkers = Integer.parseInt(value);
            if (defaultNumWorkers <= 0) {
                defaultNumWorkers = fallbackDefaultNumWorkers;
            }
        } catch (Exception ignored) {
            defaultNumWorkers = fallbackDefaultNumWorkers;
        }

        DEFAULT_NUM_WORKERS = defaultNumWorkers;
    }

Từ khoá static này là một chức năng của java gọi là static initializer. Theo như tài liệu của oracle nằm tại đây thì đoạn code trong block ở trên sẽ được execute tại thời điểm class được initialize, mà về cơ bản nó chính là thời điểm class được ClassLoader load lên (chỉ một lần duy nhất)

Default

Bạn hãy tham khảo đoạn code dưới đây

public interface Client {
    default Client decorate(Function<Client, Client> decorator) {
        @SuppressWarnings("unchecked")
        final Client newClient = decorator.apply(this);
        if (newClient == null) {
            throw new NullPointerException("decorator.apply() returned null: " + decorator);
        }

        return newClient;
    }
}

Bạn có thể nhận thấy một điều đặc biệt là interface Client có thể chứa implementation trong đó. Về cơ bản interface không cho phép bạn có implementation trong đó nhưng từ java 8 trở đi thì java đã hỗ trợ điều này. Bạn có thể tham khảo trên tài liệu của oracle. Từ khoá default chính là để support cho sự hỗ trợ này.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

huydx

118 bài viết.
1052 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
164 15
Introduction (Link) là một cuộc thi ở Nhật, và cũng chỉ có riêng ở Nhật. Đây là một cuộc thi khá đặc trưng bởi sự thú vị của cách thi của nó, những...
huydx viết 2 năm trước
164 15
White
149 15
Một ngày đẹp trời, bạn quyết định viết một dịch vụ web dự định sẽ làm thay đổi cả thế giới. Dịch vụ của bạn sẽ kết nối tất cả các thiết bị di động ...
huydx viết 2 tháng trước
149 15
White
133 15
Happy programmer là gì nhỉ, chắc ai đọc xong title của bài post này cũng không hiểu ý mình định nói đến là gì :D. Đầu tiên với cá nhân mình thì hap...
huydx viết hơn 3 năm trước
133 15
Bài viết liên quan
White
0 0
Trong bài viết này, một số hình ảnh hoặc nọi dung có thể bị thiếu do quá trình chế bản. Vui lòng xem nội dung ở blog gốc sau: (Link) (Link), chúng...
programmerit viết hơn 3 năm trước
0 0
Male avatar
9 5
Facade Design Patern Facade Patern thuộc vào họ mô hình cấu trúc (structural patern). Facade patern phát biểu rằng : "just provide a unified an...
DuongVanTien viết 2 năm trước
9 5
White
4 2
Một số hàm giúp mapping data đơn giản với Groovy Ví dụ với list data như sau: def student1 = name: "Huan", age: 22, gender: "male"] def student...
Tất Huân viết 4 tháng trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
118 bài viết.
1052 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!