High Level Programming Language/Reflection(18)
-
CGLIB 프록시 호출 흐름 완전 분석
🧠 CGLIB 프록시 호출 스택 철저 분석 + super.sayHello() 바이트코드 검증🧩 전체 콜스택 원형 🧪위 call stack과 관련된 샘플 소스 코드1. GreetingServiceImpl (타겟 클래스)package com.intheeast.cglibdemo.service;public class GreetingServiceImpl { public void sayHello(String name) { System.out.println("👋 Hello, " + name); }} 2. MethodInterceptor 인터페이스 구현체import java.io.FileWriter;import java.io.IOException;import java.io.PrintWr..
2025.06.06 -
Class.isAssignableFrom()
🧠 Java Class.isAssignableFrom()– 클래스 간 타입 대입 가능성을 런타임에 검증하는 핵심 리플렉션 메서드 A(Class 객체)는 B(아규먼트)로부터 할당 가능하다 → B 타입의 객체를 A 타입 변수에 대입할 수 있다는 의미A a = new B(); // ✅ A는 B로부터 할당 가능하다 ✅ 개요Class.isAssignableFrom(Class cls)는 Java 리플렉션 API의 중요한 메서드 중 하나로,클래스 간 타입 계층 관계를 런타임에 안전하게 검사할 수 있게 해줍니다.이 메서드는 특히 다음과 같은 상황에서 자주 사용됩니다:프레임워크에서 특정 타입을 구현한 클래스를 찾을 때DI(의존성 주입) 컨테이너에서 인터페이스 구현체를 매핑할 때직렬화/역직렬화 시 타입 체크플러그인 ..
2025.06.03 -
String 클래스가 구현하는 Comparable<String> 인터페이스
🔧 String은 Comparable 인터페이스를 구현함public final class String implements java.io.Serializable, Comparable, CharSequence, Constable, ConstantDesc { // 생략... public int compareTo(String anotherString) { byte v1[] = value; byte v2[] = anotherString.value; byte coder = coder(); if (coder == anotherString.coder()) { ..
2025.06.02 -
The Reflection API
Uses of Reflection리플렉션은 Java 가상 머신에서 실행 중인 애플리케이션의 런타임 동작을 검사하거나 수정해야 하는 프로그램에서 일반적으로 사용됩니다. 이는 비교적 고급 기능이며, 언어의 기초를 확실히 이해한 개발자만 사용하는 것이 좋습니다. 이러한 주의사항을 염두에 두었을 때, 리플렉션은 강력한 기술이며, 그렇지 않으면 불가능한 작업을 수행할 수 있도록 애플리케이션을 확장할 수 있습니다. Extensibility Features애플리케이션은 외부의 사용자 정의 클래스를 확장성 객체로 생성하여 해당 클래스의 완전한 수식 이름(fully-qualified name)을 이용해 사용할 수 있습니다. Class Browsers and Visual Development Environments클래..
2025.05.28 -
java.base
📦 Java의 java.base 모듈Java 9부터 도입된 JPMS(Java Platform Module System)는 자바 플랫폼을 모듈 단위로 구성할 수 있게 해주는 강력한 시스템입니다. 그 중심에는 언제나 존재하는, 절대 빠질 수 없는 핵심 모듈, 바로 java.base가 있습니다. 🧩 1. java.base 모듈이란?java.base는 Java 플랫폼의 핵심 클래스들을 모아놓은 기본 모듈입니다. ✅ 모든 자바 애플리케이션은 암묵적으로 이 모듈에 의존합니다.즉, module-info.java에 requires java.base;를 쓰지 않아도 자동 포함됩니다. 📚 2. 포함된 주요 패키지들다음은 java.base에 포함된 대표적인 패키지와 클래스들입니다:패키지대표 클래스설명java.langO..
2024.07.09 -
Lesson: Arrays and Enumerated Types
[튜토리얼] Java 가상 머신 관점에서 배열과 열거형(enums)은 단순히 클래스일 뿐입니다. Class의 많은 메서드를 이들에 사용할 수 있습니다. 리플렉션(Reflection)은 배열과 열거형을 위한 특정 API를 제공합니다. 이 강의에서는 일련의 코드 샘플을 통해 이러한 객체들을 다른 클래스와 구분하고, 이들에 대해 작업하는 방법을 설명합니다. 또한 다양한 오류도 다루게 됩니다. 배열(Arrays)배열은 컴포넌트 타입과 길이를 가지고 있으며, 길이는 타입의 일부가 아닙니다. 배열은 전체적으로 또는 컴포넌트별로 조작할 수 있습니다. 리플렉션은 후자의 목적을 위해 java.lang.reflect.Array 클래스를 제공합니다.배열 타입 식별하기(Identifying Array Types): 클래스 ..
2024.07.06