>  Q&A  >  본문

java에서 상수를 정의하는 방법

으아악

상수를 정의하는 이 두 가지 방법의 특징은 무엇인가요? 사용 중에 어떤 방법이 더 권장됩니까?

我想大声告诉你我想大声告诉你2662일 전883

모든 응답(2)나는 대답할 것이다

  • phpcn_u1582

    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가 비공개 함수(메서드)인 경우 좀 더 캐주얼하게 문자열 매개변수를 사용할 수 있습니다. 이러한 "엄격성 부족"은 내부적으로만 노출되어야 합니다.

    좀 더 인상적으로 보이려면 외부 세계에는 매우 전문적으로 보여야 하지만 내부적으로는 기준을 조금 낮출 수 있습니다.

    이것은 상수와 열거형의 두 가지 다른 적용 시나리오입니다. 여러분에게 도움이 되기를 바랍니다...

    회신하다
    0
  • 世界只因有你

    世界只因有你2017-06-12 09:21:32

    간단히 말하면:
    Only static final는 상수를 정의하는 방법입니다. 후자는 그렇지 않지만 기능적으로 유사합니다. 어떤 것을 사용할지는 필요에 따라 다릅니다

    깊이:
    우편 주소:

    Java 언어의 Enum 유형 사용 소개
    Java 열거 유형(enum) 소개

    회신하다
    0
  • 취소회신하다