Giới thiệu 2 keyword ít dùng trong java: static và default
Java
182
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.
1254 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
226 20
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 hơn 2 năm trước
226 20
White
195 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 hơn 4 năm trước
195 15
White
151 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 6 năm trước
151 15
Bài viết liên quan
White
2 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 5 năm trước
2 0
White
0 0
Giới thiệu Trong bài hôm nay chúng ta sẽ tìm hiểu cách handle request POST của Spring Boot. Trước đó, bạn nên biết 1. 「Spring Boot 8」Tạo Web He...
https://loda.me viết gần 2 năm trước
0 0
Male avatar
0 0
https://grokonez.com/java/java8/howtousejava8streamcollectorsgroupingbyexamples How to use Java 8 Stream Collectors.groupingBy() Examples no_toc]...
loveprogramming viết 2 ngày trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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