phpcn_u15822017-06-12 09:21:32
이 질문은 문법적인 측면에서 서스펜스가 없습니다. Baidu에서는 상수와 열거형의 차이를 구분합니다.
하지만 디자인 관점에서 보면 "enum"이 "static final"보다 낫습니다.
이것은 다소 추상적일 수 있습니다. 예를 들어 보겠습니다. 예를 들어 저는 setResponseState라는 공용 함수(보다 정확하게는 공용 메서드)를 정의했습니다.
One은 다음과 같이 정의됩니다. setResponseState(String state) { ... }, 문자열을 매개변수로 사용합니다.One은 열거형을 매개변수로 사용하여 setResponseState(EnumDemo.State state) { ... }와 같이 정의됩니다.
첫 번째 정의의 경우 올바른 호출 방법은 다음과 같습니다. setResponseState(EnumDemo.SUCCESS);
하지만 이렇게 호출하면 setResponseState("abcd"); JAVA 언어의 구문에는 문제가 없나요?
컴파일러는 여전히 여기에 전달할 수 있지만 런타임 중에 심각한 오류가 발생하고 시스템 안정성이 저하될 수 있습니다.
여기서 가장 큰 문제는 "함수 매개변수가 충분히 명확하지 않다"는 점이며, 이는 이 방법을 사용하는 개발자에게 문제를 일으킬 것입니다. 그는 나에게 전달할 매개변수를 결정하기 위해 돌아가서 내 소스 코드를 확인해야 했습니다...
그리고 이 함수(메서드)를 프레임워크 코드 세트로 캡슐화하고 소스 코드를 제공하지 않으면 개발자가 다시 확인하기가 더 어려울 것입니다. 이로 인해 개발 효율성이 저하됩니다.
setResponseState(EnumDemo.State state) { ... }를 사용한 정의 방법은 매우 명확합니다. 성공, 실패 또는 null입니다.
개발자는 이 함수(메소드)를 호출할 때 실수를 거의 하지 않으며, 소스 코드를 전혀 확인할 필요가 없습니다.
따라서 더 엄격한 접근 방식은 열거형을 사용하는 것입니다. 물론 이는 공용 함수(메서드)를 정의할 때입니다.
그리고 setResponseState가 비공개 함수(메서드)인 경우 좀 더 캐주얼하게 문자열 매개변수를 사용할 수 있습니다. 이러한 "엄격성 부족"은 내부적으로만 노출되어야 합니다.
좀 더 인상적으로 보이려면 외부 세계에는 매우 전문적으로 보여야 하지만 내부적으로는 기준을 조금 낮출 수 있습니다.
이것은 상수와 열거형의 두 가지 다른 적용 시나리오입니다. 여러분에게 도움이 되기를 바랍니다...
世界只因有你2017-06-12 09:21:32
간단히 말하면:
Only static final
는 상수를 정의하는 방법입니다. 후자는 그렇지 않지만 기능적으로 유사합니다. 어떤 것을 사용할지는 필요에 따라 다릅니다
깊이:
우편 주소:
Java 언어의 Enum 유형 사용 소개
Java 열거 유형(enum) 소개