High Level Programming Language(116)
-
sealed interface
sealed interface는 Java 15에서 도입된 기능으로, 인터페이스가 특정 클래스들만을 상속하거나 구현할 수 있도록 제한하는 기능을 제공합니다. 이를 통해 인터페이스를 상속하거나 구현할 수 있는 클래스들을 명시적으로 지정함으로써, 보다 강력한 캡슐화와 제어를 가능하게 합니다.주요 특징:제한된 상속:sealed로 선언된 인터페이스는 permits 키워드를 사용하여 상속이나 구현할 수 있는 클래스 또는 인터페이스를 명시합니다.sealed interface를 구현할 수 있는 클래스들은 반드시 같은 모듈 또는 패키지에 있어야 하며, 명시적으로 상속을 허용한 클래스만 가능합니다.하위 클래스의 종류:sealed interface를 구현하는 클래스는 세 가지로 구분될 수 있습니다:final: 더 이상 다른..
2023.05.08 -
Structuring method calls
"인코딩"이라는 개념을 사용하는 이유는 다이나믹 프록시에서 메서드 호출이 단순히 다른 객체로 전달되는 것이 아니라, 호출된 메서드와 아규먼트들이 일종의 데이터로 변환(또는 인코딩)되어 전달되기 때문입니다. 이 과정을 통해 메서드 호출에 대한 상세한 정보가 포함된 java.lang.reflect.Method 객체와 아규먼트들이 Object[] 배열로 표현되어, Invocation Handler에 전달될 수 있게 됩니다.왜 인코딩이라고 설명하는가?메서드 호출의 구조화: 메서드 이름, 파라미터 타입, 리턴 타입, 아규먼트 등의 정보는 단순한 값이 아니라, 복잡한 구조로 이루어진 데이터입니다. 이 정보를 java.lang.reflect.Method 객체와 Object[] 배열로 변환하는 과정은 마치 데이터를 인..
2023.05.02 -
Java Class Object
보호되어 있는 글입니다.
2023.05.02 -
unqualified name
"단순 이름" (unqualified name)이라는 용어는 Java에서 주로 클래스, 인터페이스, 또는 메서드의 이름을 특정한 컨텍스트 없이 단독으로 지칭할 때 사용됩니다.자세한 설명:단순 이름(Unqualified Name):정의: 단순 이름은 패키지나 클래스의 경로 정보를 포함하지 않은, 그 자체로만 존재하는 이름을 말합니다. 예를 들어, java.util.List 클래스에서 List는 단순 이름입니다.예시:클래스 java.util.ArrayList에서 ArrayList가 단순 이름입니다.클래스 com.example.MyClass에서 MyClass가 단순 이름입니다.완전한 이름(Qualified Name:정식 이름):정의: 완전한 이름은 클래스나 인터페이스의 패키지 경로를 포함한 전체 이름을 의미합..
2023.05.01 -
Java Dynamic Proxy Classes
Introduction다이나믹 프록시 클래스는 런타임에, 지정된 인터페이스 리스트를 구현하는 클래스입니다. 이러한 클래스의 인스턴스를 통해 인터페이스의 메서드를 호출하면 해당 호출이 인코딩되어 다른 객체로 전달됩니다.[structuring method calls]이 객체는 일관된 인터페이스를 통해 호출을 처리하게 됩니다. 따라서 다이나믹 프록시 클래스는 컴파일 타임 도구를 사용하지 않고도 인터페이스 목록에 대한 타입 안전한 프록시 객체를 생성하는 데 사용할 수 있습니다.다이나믹 프록시 클래스의 인스턴스에서 메서드가 호출되면, 이 호출은 해당 인스턴스의 Invocation Handler에 있는 단일 메서드[invoke]로 전달되며, 호출된 메서드를 식별하는 java.lang.reflect.Method 객체..
2023.04.28 -
JVM
보호되어 있는 글입니다.
2023.04.25