-
아이템 22 인터페이스는 타입을 정의하는 용도로만 사용하라
추측
이렇게 해석했는데, 이 해석이 맞다면 상수 인터페이스의 문제가 아니라, 그냥 인터페이스에서 정의하는 상수 전체가 갖고 있는 문제이지 않을까요?
합당한 선택지로 제시한 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
질문해주신 내용에 대해 생각해봤는데,, 영준님 해석이 맞는 것 같고 책에서 보면 아래와 같은 문장이 있는데요 그리고 '상수를 공개할 목적이라면 더 합당한 선택지가 몇 가지 있다. 특정 클래스나 인터페이스와 강하게 연관된 상수라면 그 클래스나 인터페이스 자체 에 추가해 야 한다.' 문장처럼.. 직접 그 상수를 사용하는 쪽에 추가해야 되는 것 같아요..! 예를 들어서, 아래 코드를 보면 TestInterFace에 NAME을 추가해뒀는데, InterfaceImpl 클래스에 또 NAME을 추가해서 쓰고 있으니까,, 그게 아니라 저 NAME이 필요한 InterfaceImpl 클래스에만! 선언해서 사용하는 방법으로 쓰라는 말 같습니다.. public interface TestInterFace {
static String NAME = "incheol";
}
public class InterfaceImpl implements TestInterFace {
public static final String NAME = "test";
public static void main(String[] args) {
System.out.println(NAME);
}
}
// result : test 그리고 마지막에 말씀하신 것 처럼 인터페이스에서 정의하는 상수 전체가 갖고 있는 문제라고 생각할 수도 있는데, InterfaceImpl 클래스에서처럼 다시 선언해서 사용하지 않는다면 괜찮지 않을까 싶어요 !! public interface TestInterFace {
static String NAME = "incheol";
}
public class InterfaceImpl implements TestInterFace {
public static void main(String[] args) {
System.out.println(NAME);
}
} 이해 안되시는 부분 말씀해주시면 또 고민해보겠습니당 |
Beta Was this translation helpful? Give feedback.
질문해주신 내용에 대해 생각해봤는데,, 영준님 해석이 맞는 것 같고 책에서 보면 아래와 같은 문장이 있는데요
final이 아니면 재할당해서 사용할 수 있어서 오염되는 것 같아요 .
그리고 '상수를 공개할 목적이라면 더 합당한 선택지가 몇 가지 있다. 특정 클래스나 인터페이스와 강하게 연관된 상수라면 그 클래스나 인터페이스 자체 에 추가해 야 한다.' 문장처럼.. 직접 그 상수를 사용하는 쪽에 추가해야 되는 것 같아요..!
예를 들어서, 아래 코드를 보면 TestInterFace에 NAME을 추가해뒀는데, InterfaceImpl 클래스에 또 NAME을 추가해서 쓰고 있으니까,, 그게 아니라 저 NAME이 필요한 InterfaceImpl 클래스에만! 선언해서 사용하는 방법으로 쓰라는 말 같습니다..
그리고 마지막에 말씀하신 것 처럼 인터페이스에…