Command Palette

Search for a command to run...

Bài viết trong series "Advanced Java"

17 bài viết

[Advanced Java] 4 tính chất OOP dưới góc nhìn nâng cao: thiết kế object sai ở đâu

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.

[Advanced Java] Nguyên lý SOLID trong Java: Năm quy tắc và khi nào nên bỏ qua

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.