Effective Java 학습 노트 제1 2 조 - 클래스 와 구성원 의 접근 가능 능력 최소 화
Public 는 이 종 류 는 모든 범위 에서 사용 할 수 있 음 을 나타 낸다.protected 는 하위 클래스 와 가방 안의 클래스 만 private - package (default) 를 사용 할 수 있 음 을 표시 합 니 다.
디자인 할 때 는 가능 한 한 모든 유형 이나 구성원 이 외부 에 방문 되 지 않도록 해 야 한다.한 종 류 를 설계 할 때 는 가능 한 한 4321 의 순서에 따라 설계 해 야 한다.만약 한 종류 가 다른 종류 에 만 사용 된다 면, 그것 을 이런 종류의 내부 종류 로 설계 하 는 것 을 고려 해 야 한다.일반적으로 Public 의 클래스 는 Public 필드 가 있어 서 는 안 되 지만, 우 리 는 보통 하나의 클래스 로 모든 상수 를 정의 합 니 다. 이것 은 허용 합 니 다.그러나 이 필드 들 이 기본 데이터 형식 이거 나 가리 키 는 대상 을 참조 하 는 것 은 수정 할 수 없다 는 것 을 보증 해 야 한다.그렇지 않 으 면 그들 은 수 정 될 것 이다.예 를 들 어 아래 의 정의 에서 data 는 불합리 하 다. 다른 사람들 은 배열 의 내용 을 바 꿀 수 있 고 안전 에 구멍 이 있 으 며 뒤의 두 가 지 는 문제 가 없다.
public class Con
{
public static final int[] data = {1,2,3};// it is bad
public static final String hello = "world";
public static final int i = 1;
}
public class Con
{
public static final int[] data = {1,2,3};// it is bad
public static final String hello = "world";
public static final int i = 1;
}
data 안전 위험 을 해결 하 는 방법 은 두 가지 가 있 습 니 다.
private static final Type[] PRIVATE_VALUES = {...};
public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES));
private static final Type[] PRIVATE_VALUES = {...};
public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES));
private static final Type[] PRIVATE_VALUES = {...};
public static final Type[] values(){
return (Type[])PRIVATE_VALUES.clone();
}
private static final Type[] PRIVATE_VALUES = {...};
public static final Type[] values(){
return (Type[])PRIVATE_VALUES.clone();
}
한 마디 로 하면 모든 복잡 한 누적 인터페이스 와 구성원 을 API 의 일부분 으로 바 꾸 는 것 을 방지 해 야 한다. 공유 정적 final 도 메 인의 특수 한 상황 을 제외 하고 공유 류 는 공유 도 메 인 을 포함 하지 말고 정적 final 도 메 인 이 인용 하 는 대변성 을 확보 해 야 한다.
본 고 는 CSDN 블 로그 에서 왔 습 니 다. 전재 할 때 출처 를 표시 해 주 십시오. http://blog.csdn.net/ilibaba/archive/2009/01/16/3795124.aspx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.