14 Apr 2023 EffectiveJava
이번 내용은 OOP에 관련된 내용이다. 객체지향언어인 자바를 좀더 객체지향적으로 사용할 수 있도록 정리된 글이다.
태그 달린 클래스 (tagged class)란 하나의 클래스안에 두 가지 이상의 의미를 표현할 수 있도록 현재 표현하는 의미의 태그값을 통해 클래스가 구분되고 있는 클래스이다.
태그 달린 클래스 (tagged class)
태그클래스에 대한...
13 Apr 2023 EffectiveJava
인터페이스는 자신이 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 한다. 달리말해, 클래스가 어떤 인터페이스를 구현한다는것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는것이다.
인터페이스는 오직 이용도로만 사용해야한다.
지침에 맞지 않은 인터페이스
상수 인터페이스라는 것이 있다. 상수 인터페이스는 메서드없이, static final 필드로만 가득찬 인터페이스인데...
07 Apr 2023 EffectiveJava
인터페이스는 구현하는 쪽을 생각해 설계하라
디폴트 메서드
자바 8전에는 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드를 추가할 방법이 없었다.
하지만 디폴트 메서드가 생긴 이후에 기존 인터페이스에 메서드를 추가할 수 있게 되었다.
디폴트 메서드를 선언하면, 그 인터페이스를 구현한 후 디폴트 메서드를 재정의하지 않은 모든 클래스에서...
06 Apr 2023 EffectiveJava
추상 클래스보다는 인터페이스를 우선하라.
자바의 다중 구현 메커니즘
자바에서는 인터페이스와 추상 클래스 이렇게 두가지를 제공하고 있으며, 자바 8부터는 인터페이스도 디폴트 메서드(default method)를 제공해 두 메커니즘 모두 인스턴스 메서드를 구현형태로 제공 할 수 있게 되었다.
인터페이스와 추상 클래스의 차이
인터페이스는 선언한 메서드를 모두...
27 Mar 2023 Java
No serializer found for class
테스트 코드를 작성 하던 도중 테스트를 실행하니 아래와 같은 에러가 발생했다.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.TestClass]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No...