본문 바로가기

런타임2

[Java] 제네릭은 처음부터 있었던 문법이 아니다(feat. raw type, type eraser) ㅇraw type: 다이아몬드()를 사용하는 일반적인 제네릭 방식과는 다르게, 다이아몬드를 사용하지 않는 방식내부의 타입 매개변수가 Object로 사용된다고 이해하면 된다GenericBox integerBox = new GenericBox();자바의 제네릭은 자바가 처음 등장할 때부터 있었던 것이 아니라, Java 5 이후에 등장했기 때문에 제네릭이 없던 시절의 과거 코드와 호환이 필요했다. 그래서 어쩔 수 없이 이런 raw type을 지원하는 것이다. 따라서 우리가 코드를 작성할 때는 raw type을 사용할 이유가 없다.※ raw type은 Java에만 있는 독특한 개념이다   type eraser도 마찬가지로 이해하면 된다ㅇtype eraser: 컴파일 시점에 제네릭 타입 정보를 제거하고 raw t.. 2024. 9. 16.
[OOP] 정적 의존관계 vs 동적 의존관계 ㅇ정적 의존관계(Static Dependency): 컴파일 시간에 결정되며, 주로 클래스 간의 관계를 의미쉽게 이야기해서 프로그램을 실행하지 않고, 클래스 내에서 사용하는 타입들만 보면 쉽게 의존관계를 파악할 수 있다.특징:컴파일 타임: 정적 의존관계는 코드가 컴파일될 때 결정된다. 즉, 소스 코드에서 어떤 클래스가 다른 클래스를 참조하거나 사용하는 경우, 이 의존관계가 컴파일러에 의해 확인된다.명시적 선언: 클래스가 다른 클래스를 사용하는 경우, 그 클래스의 인스턴스를 생성하거나 메서드를 호출하는 코드가 명시적으로 작성된다.파일 참조: Java에서는 import 문을 통해 다른 클래스를 참조하거나 사용하는 것을 확인할 수 있다.   ㅇ동적 의존관계(Dynamic Dependency): 프로그램이 실행되.. 2024. 8. 20.