Giới thiệu 2 keyword ít dùng trong java: static và default
Java
76
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

116 bài viết.
938 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
148 14
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 gần 2 năm trước
148 14
White
118 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
118 15
White
95 10
(Ảnh) Mở đầu Chắc nhiều bạn đã nghe đến khái niệm oauth. Về cơ bản thì oauth là một phương thức chứng thực, mà nhờ đó một web service hay một ap...
huydx viết gần 3 năm trước
95 10
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 gầ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 hơn 1 năm trước
9 5
White
0 2
(Link), mình đã nêu ra các phần mềm chính (portal, sdk và ide). Trong phần này, mình sẽ hướng dẫn cụ thể cài đặt môi trường máy chủ và môi trường l...
programmerit viết gần 3 năm trước
0 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
116 bài viết.
938 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á!