Bài viết trong series "Advanced Java"
17 bài viết
4 tính chất OOP trong Java nhìn xa hơn phần định nghĩa, chạy thật trên OpenJDK 21: encapsulation bảo đảm bằng behaviour thay vì accessor, method được inherit đi vòng qua guard của subclass, cách viết lại bằng delegation, switch theo type bạn sở hữu và type bạn không sở hữu, abstraction rò rỉ ngay trong signature, và một subclass compile được, test của nó pass, vẫn làm hỏng caller.
[Advanced Java] Nested class, Inner class, Local class và Anonymous class trong Java
Static nested, inner, local và anonymous class trong Java trên OpenJDK 21: field synthetic this$0 nhìn thấy bằng javap, Outer.this và outer.new Inner(), memory leak do inner class gây ra, luật effectively final khi capture, class file Outer$1, và so sánh cụ thể giữa anonymous class với lambda.
[Advanced Java] Enum nâng cao trong Java: constructor, constant body, EnumMap và enum singleton
Enum nâng cao trong Java trên OpenJDK 21: javap cho thấy enum thực sự compile ra cái gì, field và constructor private ngầm định, constant-specific class body cùng những file class sinh thêm, abstract method, enum implement interface, EnumMap và EnumSet, switch exhaustive, enum singleton mà reflection không phá được, state machine bằng enum, và các bẫy quanh ordinal với values().
[Advanced Java] Generics trong Java: type parameter, bounded type, wildcard và type erasure
Generics trong Java trên OpenJDK 21: container Object thời chưa có generics và ClassCastException mà nó sinh ra, cách viết generic class và generic method, bounded type parameter và nhiều bound, wildcard cùng PECS với đúng message lỗi của javac, type erasure chứng minh bằng javap, Signature attribute, bridge method, và lời hứa thật sự của SuppressWarnings unchecked.
Năm nguyên lý SOLID trong Java trên OpenJDK 21, mỗi nguyên lý một cặp before/after compile và chạy được: một class tách theo lý do thay đổi, một switch phình to thay bằng interface, một subclass phá caller mà không có warning nào, một UnsupportedOperationException lẽ ra compiler đã chặn được, một class không chạy nổi nếu thiếu file, và chỗ mà mỗi nguyên lý không còn đáng để áp dụng.
[Advanced Java] Design Pattern phổ biến trong Java: Singleton, Factory, Builder, Observer và Strategy
Năm design pattern trong Java trên OpenJDK 21, mỗi pattern đều được chỉ ra ngay bên trong JDK và đều kèm trường hợp nó gây hại: initialization của singleton và cuộc đua mà null check không đồng bộ thua, Integer.valueOf cùng cache của nó, staged builder được compiler kiểm tra, listener gây leak và listener làm dừng cả lượt broadcast, và Comparator chính là strategy type bạn vẫn dùng hằng ngày.