[Java] Java class, 어노테이션 학습

Welcome to Seoyun Dev Log·2023년 7월 18일
0

[WORK] 학습내용

목록 보기
7/25

@Deprecated, @deprecated

@Deprecated

: 타입, 필드, 메소드 등에 붙일 수 있고 해당 어노테이션을 붙이면 메소드나 필드를 사용하면 빌드할 때 워닝 메시지를 보여준다. 컴파일러에게 이 메소드는 없어질거라는걸 알려주고 쓰지 말도록 경고하는 것.

@deprecated

: javadoc로 이 메소드는 어떤 이유로 사라지며 대신 어떻게 사용하라는 내용을 담아줄 수 있다.
javadoc을 보는 사용자에게 알려주는 것

/*
 * @deprecated Replaced by {@link #newOne()}, deprecated for slow performance.
 */
@Deprecated
public void oldOne() {
  ..
}

@Order

: DI 받을 때 주입받는 Bean의 우선순위가 필요할 때 사용한다.
value가 작을수록 우선순위가 높아 앞쪽으로 정렬되고 클수록 뒷쪽으로 정렬된다.

  • 주의: N개의 Bean중 일부만 Order를 사용하면 나머지 Bean의 순서는 임의의 순서로 적용된다.
    기본값이 Ordered.LOWEST_PRECEDENCE이다 따라서 정수 최댓값을 나타내며 가장 낮은 우선순위를 뜻함
    • 값이 중복되는 경우 동일 패키지에 존재 시 클래스명 오름차순으로 주입되고, 다른 패키지일 경우 패키지명 오름차순으로 주입된다.
@Order(value = 1)

참고


ObjectMapper

enable()

configure()

: 오브젝트를 컨버팅 할 때 타깃과 소스의 이름의 케이스를 무시하고 없는 경우도 오류내지 않고 가능한 것만 매핑하라는 옵션이다. json에는 있지만 Mapping될 Object에는 없는 필드를 무시해야 하는 경우

참고


Pair.class

javafx.util.Pair
'Pair<K,V> class'
두 개체의 튜플을 저장하는 컨테이너로 java는 실제로 Pair 클래스의 구현을 제공하지 않는다

  • 키-값 쌍을 나타내며 getKey(), getValue(), hashCode(), equals(java.lang.Object o), 그리고 toString() 에서 상속된 메서드가 거의 없습니다.
import javafx.util.Pair;
 
import java.util.ArrayList;
import java.util.List;
 
class Main
{
    // Java 8 이상에 도입된 `javafx.util.Pair` 클래스 시연
    public static void main(String[] args)
    {
        List<Pair<String, Integer>> entries = new ArrayList<>();
 
        entries.add(new Pair<>("C", 20));
        entries.add(new Pair<>("C++", 30));
 
        // `getKey()` 및 `getValue()` 메소드를 사용하여 첫 번째 쌍을 인쇄합니다.
 
        System.out.println("{" + entries.get(0).getKey() + ", " +
                            entries.get(0).getValue() + "}");
 
        // `getKey()` 및 `getValue()` 메소드를 사용하여 두 번째 쌍을 인쇄합니다.
 
        System.out.println("{" + entries.get(1).getKey() + ", " +
                            entries.get(1).getValue() + "}");
    }
}

참고


Pattern

정규표현식
자바 API java.util.regex 패키지를 사용해야 합니다
문자열을 정규표현식 패턴 객체로 변환해주는 역할.
이때 문자열을 정규식 문법에 알맞게 구성해주지 않으면 예외가 발생한다.

  • 특징
    • 일반 클래스처럼 공개된 생성자를 제공하지 않는다. 그래서 정규식 패턴 객체를 생성하려면 complie() 정적 메소드를 호출해야한다.
// 문자열 형태의 정규표현식 문법을 정규식 패턴으로 변환
String patternString = "^[0-9]*$";
Pattern pattern = Pattern.compile(patternString); // Pattern 객체로 컴파일된 정규식은 뒤의 Matcher 클래스에서 사용된다

Pattern 클래스 주요 메서드

compile(String regex) : 주어진 정규표현식으로부터 패턴을 만듭니다.
matcher(CharSequence input) : 대상 문자열이 패턴과 일치할 경우 true를 반환합니다. 메서드의 첫번째 입력값은 정규식 문자열이고, 두번째 입력값은 검증 대상 문자열입니다.
asPredicate() : 문자열을 일치시키는 데 사용할 수있는 술어를 작성합니다.
pattern() : 컴파일된 정규표현식을 String 형태로 반환합니다.
split(CharSequence input) : 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리합니다.

참고


CharSequence

인터페이스명(character + sequence)에서 짐작되듯이 char 값을 읽을 수 있는 시퀀스
String 문자열을 작성된 후에 변경할 수 없다. String 객체에 보관하는 문자열은 유니코드로 변형되므로 Html과 같은 마크업 문자를 입출력 할 때 문제가 발생한다.

  • 특징
    • 클래스가 아니고 인터페이스이다.
    • 다영한 종류의 char 시퀀스에 대해 균일한 읽기 전용 접근 권한을 제공한다. implements 하여 구현된 구현체로는 String, SpannableStringBuilder, StringBuilder, StringBuffer 등이 있다.
    • 유니코드라도 마크업 문자를 사용할 수 있다.
    • 가공할 수 있다.
    • xml에서 사용하는 스타일이다.

참고


"".equalsIgnoreCase

: 대소문자 구분없이 비교할 때 많이 사용
문자열이 같은경우 true 리턴
문자열이 다른경우 false 리턴


Serializable 직렬화

JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해준다.
자바 시스템 내부에서 사용되는 객체 또는 데이터를
외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터 변환하는 기술과
바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기한다.

  • 생성한 객체를 파일로 저장하는 상황
  • 저장한 객체를 읽어야 하는 상황
  • 다른 서버에서 생성한 객체를 받아야 하는 상황

serialVersionUID: 직렬화 버전의 고유값 이다.

: serialVersionUID 가 선언되어있지 않을 경우 default로 값을 만들어준다고 한다. 하지만 이 값은 컴파일러의 구현에 따라 달라질 수 있기 때문에 역직렬화 시 예기치 못하게 실패할 수도 있다고 한다.

  • static final long으로 선언해야한다.
  • 변수명은 serialVersionUID로 선언해줘야 자바가 인식한다.
  • 주의: Object는 모든 클래스의 최고 조상이기 때문에 이 클래스가 Serializable을 구현하다면 모든 클래스들이 직렬화가 가능했을 것입니다. 그렇기 때문에 Object 클래스는 Serializable을 구현하지 않아 직렬화를 할 수 없습니다.

참고


Property

객체와 관련하여 이름 붙여진 속성을 말하며 빈이 관리하는 데이터를 의미.

public String getProperty(String key)
public String getProperty(String key, String defaultValue)

첫번째 메소드는 key를 키값으로 갖는 프로퍼티가 있을 경우 그 값을 리턴하고, 없다면 null을 리턴한다.
두번째 메소드는 key를 키값으로 갖는 프로퍼티가 있을 경우 그 값을 리턴하고, 없다면 두번째 파리미터로 넘겨준 defaultValue를 리턴한다. getProperty() 메소드 이외에 다른 메소드에 대해 알고 싶다면 Java API 문서를 참조하기 바란다.

  • Boolean.parseBoolean(String)
    대소문자 구분이 없이 문자열이 true인지 false인지만 판별합니다. 자료형 참조형 모두 같은 결과를 리턴합니다.

참고


profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글