developer tip

부울 getter 메소드에 대한 유효한 JavaBeans 이름

copycodes 2020. 12. 25. 10:20
반응형

부울 getter 메소드에 대한 유효한 JavaBeans 이름


나는 대부분의 변수 이름이와 같이 "is"와 함께 작동한다는 것을 알고 isBlue()있지만 "has"도 유효한 접두사입니다 hasProperty().


JavaBeans 사양 섹션 8.3.2 에 따르면 :

부울 속성
또한, 부울 속성의 경우 getter 메서드가 패턴과 일치하도록 허용합니다.

public boolean is<PropertyName>();

이 " isPropertyName"메서드는 " "메서드 대신 제공 get<PropertyName>되거나 " "메서드에 추가로 제공 될 수 있습니다 get<PropertyName>. 두 경우 모두 is<PropertyName>부울 속성에 대한 메서드가 있으면 " is<PropertyName>"메서드를 사용 하여 속성 값을 읽습니다. 부울 속성의 예는 다음과 같습니다.

공개 부울 isMarsupial (); public void setMarsupial (boolean m);

즉, 그 이후로 무언가 변경 has되지 않는 한 유효한 접두사가 아닙니다.

그것은 가능성의 일부 툴과 라이브러리 어쨌든 이러한 속성을 인식하지만, 그것에 의존하는 것은 좋은 생각이 아니다.


Jon Skeet은 사양에 따라 유효하지 않다고 지적했습니다. 또한 canX, shouldX그리고 좋아하는이 유효하지 않습니다. 다소 불행합니다. 다음은 주어진 속성에 유효한 getter가 있는지 확인하는 방법입니다.

BeanInfo info = Introspector.getBeanInfo(Item.class);
Item itm = new Item();
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

클래스 Item는 foo 속성 및 getter가있는 javabean이어야합니다. read 메소드가 null이면 javabeans 사양에 따라 정의 된 유효한 getter가 없음을 의미합니다.


이것은 다소 주관적이지만 예, "has"는 부울 속성에 대해 완벽하게 유효한 접두사입니다.

질문을 편집 하면 javabeans 사양이 언급되지 않았으므로 질문의 해당 측면을 다루지 않았습니다. 따라서 위의 답변입니다.

참조 URL : https://stackoverflow.com/questions/799280/valid-javabeans-names-for-boolean-getter-methods

반응형