안녕하세요. 오늘은 커스텀 어노테이션을 생성할 때 주로 사용하는 어노테이션인 @Retention어노테이션에 대해서 다루어보겠습니다. 보통 어노테이션은 다음과 같이 선언됩니다. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyAnnotation { } @Retention 어노테이션으로 어느 시점까지 어노테이션의 메모리를 가져갈 지 설정하고, @Target 어노테이션으로 필드, 메소드, 클래스, 파라미터 등 선언할 수 있는 타입을 설정하면 대부분 커스텀 어노테이션은 쉽게 생성할 수 있습니다. 여기서 속성부분만 설정해주면요!! 그럼이제 @Retention 어노테이션을 까보겠습니다!!! /** * Indicat..
기존의 문자열 비교 기존에 문자열 비교를 할 때는 당연히 String 클래스의 equals() 메소드를 사용하라고 암기적으로 외워왔을 것입니다. 예를 들어, "String 문자열의 경우 ==(참조값 비교) 가 아닌 equals() 메소드로 값 비교를 한다." 라는 식으로 말이죠. 이 문장은 자바 1.7까지는 유효했을 것입니다. String의 문자열이 일치하는지는 당연히 equals() 메소드로 확인이 가능했으니까요. String 클래스의 equals() 메소드를 보겠습니다. String equals() 메소드 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String..
자바 Objects 클래스에 대해서 - java 1.7버전에서 등장한 클래스 - java.util 패키지 - 객체에서 작업하기위한 여러가지 정적 유틸리티 클래스로 구성된 클래스 - 기능들에는 객체의 hashcode를 계산하기 위해 Null 안전 혹은 Null 허용 메소드들을 포함하고 있으며 객체의 문자열을 반환하고 두 객체를 비교합니다. - 아래 내용은 https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html 페이지를 참조하여 포스팅하였습니다. int compare(T a, T b, Comparator
Objects 클래스의 equals와 deepEquals 메소드 차이.deepEquals 메소드public static boolean deepEquals(Object a, Object b) { if (a == b) return true; else if (a == null || b == null) return false; else return Arrays.deepEquals0(a, b); }- 이렇게 소스코드가 이루어져 있음. equals보다 deeply 비교를 하는 메소드- 둘중 하나가 null 인경우는 당연히 false, 둘다 Null 인경우는 완전히 같다고 보고 true- 나머지는 Arrays 클래스의 deepEquals0 메소드를 이용하게 되는데. Arrays 클래스의 deepEquals0 메소드는..