문자열이 올바르게 구성되어 있는지 검증할때 사용한다.
Pattern.matches 메소드로 검증한다. (어떠한 문자열을 입력받을때 양식에 맞게 입력되었는지 검증이 필요할때 사용할 수 있다.😁)
코드에서 @으로 작성되는 요소이다. 오버라이딩 할때 오버라이딩 하는 메소드 위에 뜨는 @Override 가 어노테이션이다. 설정정보를 전달해준다.
인터페이스를 정의하는 것과 비슷하게 어노테이션 타입도 정의가 가능하다.
제네릭이란 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할때 파라미터를 구체적인 타입으로 대체시키는 기능이다.
public class Box <T>{ //T는 Type 을 의미하는 약자로 자주 사용된다.
public T content; //T 타입을 사용해 초기화가 가능하다. }
타입 파라미터를 대체하는 타입은 클래스 및 인터페이스이며, 기본타입은 대체될 수 없다. (Integer이 아닌 int는 기본타입이기 때문에 대체되지 않는다.😒)
보통은 컴파일 시에 발생하는 에러를 방지하기 위해 강한 타입 체크를 위해 사용된다.
Box<String> box = new Box<>(); //제네릭 객체 생성
동일한 타입으로 호출하고 싶다면 생성자에 타입을 명시하지 않아도 된다.
제네릭 타입은 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.
선언부에 '<>' 부호가 붙고 그 사이에 타입 파라미터들이 위치한다.
public class Class<A,B...>{}
public interface Interface<A,B...>{}
일반적으로 대문자 알파벳 한 글자로 표현하며, 무엇을 의미하는 약자로 사용된다. (ex: Type T , Key K , Value V 등등)
리턴타입이나 파라미터에 제네릭 타입을 사용 가능하다.
제네릭 메소드는 타입 파라미터를 가지고 있는 메소드를 말한다.
public <T> Box <T> boxing(T t){} // 리턴 타입 앞에 타입 파라미터를 정의한 뒤
//리턴타입과 매개변수 타입에서 사용
모든 타입으로 대체할 수 없고 특정 타입과 자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 파라미터를
제한된 타입 파라미터 라고 한다.
public <T extends 상위타입> 리턴타입 메소드(매개변수){}
'?' 는 범위에 있는 모든 타입으로 대체할 수 있다는 표시이다.
리턴타입 메소드명(제네릭터입<? extends/super 클래스명> 변수){}