CJC (1): ToStringBuilder 두 가지 방법 용법 의 장단 점 및 문제 - rmn 190 - ITeye 기술 사이트
3959 단어 StringBuilder
CJC (1): ToStringBuilder 두 가지 방법 용법 의 장단 점 과 문제
블 로그 분류:
디자인 모드
F#
Security
CJC 는 Common Java Cookbook 의 줄 임 말 입 니 다. 이것 은 소개 ApacheCommon 오픈 소스 프로젝트 의 전자 책 입 니 다. 여기 서 CJC 는 제 가 그 소스 코드 에 대한 연 구 를 대표 하 는 시리즈 블 로 그 를 대표 합 니 다. 왜 그것 을 연구 해 야 합 니까?관심 이 있 으 면 다른 블 로 그 를 보 세 요. 이것 은 ApacheCommon 소스 코드 를 연구 하 는 첫 번 째 블 로그 입 니 다. 먼저 가장 간단 한 것 부터 시작 합 니 다. 즉, Object 류 의 toString 방법 을 중심 으로 자동화 되 는 일련의 유형 입 니 다. 어떻게 하면 toString 방법 을 자동화 할 수 있 습 니까? 두 가지 가 있 습 니 다. 반사 와 수 동 설정 입 니 다. 구체 적 인 호출 은 간단 하고 할 말 이 없 기 때문에 더 이상 군말 하지 않 겠 습 니 다. 다음은 그 장단 점 을 열거 하 겠 습 니 다. 반사 방법의 장점: 1. 코드 가 간결 해서 설정 이 필요 없습니다. 2, Model 속성 이 변 하면 tostring 방법 을 수 동 으로 변경 하지 않 아 도 됩 니 다. 단점: 1. 일부 속성 은 toString 에 게 입력 시 키 고 싶 지 않 습 니 다. (소 용이 없 을 수도 있 고 암호 적 인 측면 에서 고려 할 수도 있 습 니 다) 그러나 반사 시 모든 속성 값 이 졌 습 니 다. (이것 은 이미 해결 되 었 습 니 다. 아래 를 보 세 요. 하지만 해결 되 었 지만 다른 방식 보다 유연 하지 않 습 니 다.) 2,
. , java private , toString , private .
If your system is running under a restrictive SecurityManager
, you may need to alter your configuration to allow Commons Lang to by pass these security restrictions. 자바 보안 문제 에 대해 아직 체득 하지 못 했 으 니, 지금 여기에 써 서 대비 안 을 작성 하고, 이후 주 의 를 환기 시 킵 니 다. 이 반사 에 비해 ToStringBuilder 로 직접 설정 하면 훨씬 유연 합 니 다. 다음은 반사 방법 으로 유연성 이 부족 한 확장 을 보완 하 는 것 입 니 다. 이것 은 제 가 처음 보 는 것 이기 때문에 여기에 두 고 기록 합 니 다. 한 가지 유형 에서 password 라 는 속성 이 있다 고 가정 하면 일반적인 상황 에서 toString 에 게 입력 하 게 하고 싶 지 않 지만 반사 로 기본 적 인 상황 에서 출력 합 니 다. 어떻게 합 니까?ReflectionToStringBuilder 소스 코드 에 있 는 문 서 를 보 았 을 때 이러한 확장 자 를 발 견 했 습 니 다. 하위 클래스 를 통 해 accept 방법 을 덮어 서 선별 합 니 다. 구체 적 으로 다음 과 같 습 니 다.자바 코드
public String toString() {
return (new ReflectionToStringBuilder(this) {// .
protected boolean accept(Field f) {
return super.accept(f) && !f.getName().equals("password");
}
}).toString();
}
이렇게 하면 toString 에서 password 라 는 속성 을 건 너 뜁 니 다. 위 에 두 가지 방법의 장단 점 과 반사 시의 확장 을 기록 했다. 사실은 이 ToString Builder 를 연구 한 후에 세 가지 수확 이 있 는데 위 에 첫 번 째, 세 번 째 는 상대 적 으로 커서 다음 편 에 놓 을 수 밖 에 없다. 여기 서 두 번 째 수확 을 소개 한다. 수확 이 라 고 하 는 것 은 문제 이지 만 문 제 는 새로운 수확 의 시작 입 니 다. 문 제 는 다음 과 같 습 니 다. private 의 정적 내부 클래스 는 private 와 같은 방법 이 있 습 니 다. readResolve (ToString Style 의 내부 클래스 Default ToString Style 참조), 그럼 이 방법 은 무슨 소 용이 있 습 니까? 반사 하지 않 아 도 이 방법 은 호출 될 수 없습니다. 이 방법 에 대한 설명 을 보 니 "Ensure Singleton after serialization" 이 라 고 합 니 다. 무슨 뜻 인지 모 르 겠 습 니 다. 왜 이전에 본 적 이 없 습 니까? 이 문 제 는 우선 여기에 두 세 요. 두 가지 작은 수확 을 다 썼 습 니 다. 다음 편 에 서 는 ToString Builder 가 저 에 게 준 가장 큰 수확 인 abstract 와 디자인 모델 을 소개 할 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
String, StringBuffer, StringBuilder 어떻게 다른가?이 String 객체는 어떻게 선언을 하냐에 따라 JVM내의 String constant pool에 저장되기도하고, Heap 영역에 저장되기도 한다. 리터럴 방식으로 생성하게 되면 String constant poo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.