반응형 Language15 컴파일 타임 의존성과 런타임 의존성 객체지향 프로그래밍에서는 객체간의 의존성이 빈번하게 발생한다.의존이란 상위 모듈(호출자)이 기능 수행을 위해 하위 모듈(피호출자)의 자원을 사용하는 것을 말한다.(하위 모듈의 변경사항이 상위 모듈에 영향을 끼침)이러한 의존관계의 설정은 컴파일 타임에 결정되기도 하고 런타임에 결정되기도 한다.컴파일 타임 의존성과 런타임 의존성은 말그대로 어느 시점에 의존성이 결정되느냐의 차이이다. 이 시점의 차이를 구분하기 어렵다면 일단은 아래와 같이 이해해보자.컴파일 타임 의존성 : 컴파일러 관할 영역 -> 순수 프로그래밍 코드를 통해 의존관계 확인 가능 -> 의존성 변경시 코드 변경 필요런타임 의존성 : 컴파일러 관할 영역 밖 -> 런타임 영역에서 실행되며 xml, 어노테이션을 해석하여 의존관계 결정 -> 의존성 변경.. 2024. 2. 11. [진행중][자바, 코틀린] 제너릭이란? 그리고 공변성과 원시(primitive) 타입 비허용 제너릭이란? 클래스, 인터페이스, 함수에서 사용되는 필드, 매개변수, 반환타입을 미리 정의하지 않고 사용하는 시점에 특정 타입을 지정할 수 있도록 해주는 기법을 제너릭(Generic)이라고 한다. 제너릭을 통해 클래스나 메서드를 각각의 타입마다 재정의할 필요 없이 코드 중복 없이 여러 타입에 대하여 재사용할 수 있다. 자바나 코틀린에서는 컴파일 단계에서 안정적인 타입체크를 함으로써 여러타입에 대해 안정적으로 사용할 수 있게 지원하고 있다. *용어 정의 제너릭 타입 : 여러 타입을 받을 수 있는 요소, 즉 제너릭 개념이 적용된 타입을 제너릭 타입이라고 한다. 원시(raw) 타입 : 제너릭이 도입되기 이전 다양한 데이터 타입을 다루기 위해 Object타입으로 데이터를 형변환하여 사용하는 타입 제너릭 메서드(.. 2023. 12. 20. String, StringBuilder, StringBuffer의 차이 String(Immutable, 불변)String 객체는 불변 객체이다. 우리가 String 객체에 + 연산이나 concat과 같은 메서드를 실행하여 값을 변경시키는 것은실제로는 새로운 값을 가진 String 객체를 생성하는 것이다.이로인해 String타입 객체의 값을 변경하는 작업은 메모리 자원 할당과 해제를 유발하여 속도저하와 메모리 자원의 비효율성을 유발한다.값을 나타내는 value에 final 선언private final byte[] value;자바에서 String을 불변으로 설정한 이유String 객체를 불변하게 설계한 이유는 캐싱, 보안, 동기화, 성능측면 이점을 얻기 위해서이다.1. 캐싱 : String을 불변하게 함으로써 String pool에 각 리터럴 문자열의 하나만 저장하며 다시 사용.. 2023. 11. 15. 불변(Immutable)객체와 가변(mutable) 객체 불변 객체란객체의 속성을 초기화 이후 변경이 불가능한 객체로 상태 변경이 불가능한 객체이다.ex) String, 원시타입의 래퍼타입(Boolean, Integer, Float, Long, Double), ResultSet 불변객체 생성 방법1. private final 선언2. 수정자 메서드 제공 금지외부에서 속성에 접근하여 함부로 값을 변경하지 못하도록 private으로 선언한다.클래스의 모든 필드값에 final을 선언하여 값이 최초 한번 할당된 이후 변경되지 않도록 한다.수정자 메서드를 제공하지 않음으로써 값이 변경되지 않음을 보장한다. 아래 클래스를 보면 세터 메서드는 존재하지 않고 게터 메서드만 제공되고 있다.public class Member { private final String emai.. 2023. 11. 15. 이전 1 2 3 4 다음 반응형