🛠️ 개발 환경 kotlin : 1.8.22 💬 상황 설명 회사에서 개발을 하던 중, 동일한 클래스에 대한 두 인스턴스의 값을 비교해 다른 부분을 찾아 프론트에서 보여주는 로직이 필요했다. enum class PostCategory(val title: String) { C1("자유 게시판"), C2("정보 게시판") override fun toString(): String { return title } } class Post() { var title: String = "" var content: String = "" var isDeleted: Boolean = false var category: PostCategory = PostCategory.C1 var writer: Member } 예를 들어, 위와..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 가변인수와 제네릭 가변인수(varargs) 메소드와 제네릭은 JDK 5에서 함께 추가되었으니 잘 어우러지리라 기대하겠지만, 그렇지 않다. 가변인수는 메소드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해준다. public class VarargsTest { @Test void argsTest() { printArgs(1, 2, 3, 4, 5); } public void printArgs(int... args) { for (int arg : args) { System.out.printf("%d ", arg); } } } 가변인수 메소드를 호출하면 해당 인수들을 ..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 타입 차이 배열과 제네릭 타입에는 중요한 차이가 두 가지 있다. 공변과 불공변 실체화(reify) 공변과 불공변 배열은 공변;함께 변한다(covariant)이다. Sub가 Super의 하위 타입이라면, Sub[]는 Super[]의 하위 타입이 된다. Long은 Object의 하위에 속해있기 때문에 Object[]와 Long[]은 함께 사용이 가능하다. @Test void objArrTest() { Object[] objectArr = new Long[1]; // 런타임 에러 발생 : java.lang.ArrayStoreException: java.lang.String..
Effective Java 3/E를 공부하며 작성한 글입니다. 혼자 공부하고 정리한 내용이며, 틀린 부분은 지적해주시면 감사드리겠습니다 😀 제네릭 제네릭(generic)은 자바 5부터 사용할 수 있으며, 안정적인 형변환을 할 수 있도록 지원하는 타입이다. 제네릭은 클래스 혹은 인터페이스에 타입 매개변수를 통해 붙여 사용할 수 있다. public class ArrayList {...} public interface List {...} 이러한 형태를 제네릭 클래스 혹은 제네릭 인터페이스라고 부르며, 이를 통 틀어서 제네릭 타입이라고도 부른다. 매개변수화 타입 각각의 제네릭 타입은 일련의 매개변수화 타입(Parameterized type)을 정의한다. public class ArrayList {...} 위 코..