Annotation은 기본적으로 일정한 기능을 가진 함수이다.
Annotation 종류
@Override
: 메소드가 부모 클래스나 인터페이스에서 오버라이드된 메소드임을 나타냅니다. 만약 해당 메소드가 부모 클래스나 인터페이스에 존재하지 않는다면, 컴파일러는 오류를 발생시킵니다.
@Deprecated
: 메소드, 클래스 또는 필드가 더 이상 권장되지 않는 것을 나타냅니다. 이 어노테이션을 사용하면 컴파일러는 사용 시 경고를 표시합니다.
@SuppressWarnings
: 특정 경고 메시지를 억제하도록 컴파일러에게 지시합니다. 예를 들어, "@SuppressWarnings("unchecked")"는 "타입 안전성 경고"를 억제합니다.
@FunctionalInterface
: 함수형 인터페이스임을 나타냅니다. 이 어노테이션이 지정된 인터페이스는 하나의 추상 메소드만을 가질 수 있습니다.
@SafeVarargs
: 제네릭 가변 인수(varargs) 메소드에서 경고를 억제합니다. 이 어노테이션을 사용하면, 해당 메소드가 타입 안전하다고 가정하는 경고를 억제할 수 있습니다.
@SuppressWarnings("serial")
: 직렬화(serialization)할 때 발생하는 "불필요한 직렬화 경고"를 억제합니다.
Person kim = new Person("홍길동",35);
Person park = new Person(new String("홍길동"),35);
Person heo = new Person("홍길동",34);
if(kim.equals(heo))
System.out.println("같은 사람입니다.");
else
System.out.println("다른 사람입니다.");
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public boolean equals(Object obj) {
Person person = (Person) obj;
if (name.equals(person.name) && (age == person.age)) {
return true;
}
return false;
}
}
try-catch-finally는 예외 처리를 위해 사용되는 구문입니다. try 블록
은 예외가 발생할 수 있는 코드를 포함하고 있습니다. catch 블록
은 예외가 발생했을 때 해당 예외를 처리하는 블록입니다. finally 블록
은 예외 발생 여부와 상관없이 항상 실행되는 블록입니다.
example
try {
// 예외가 발생할 수 있는 코드
int a = 10;
int b = 0;
int result = a / b;
System.out.println("결과: " + result);
} catch (ArithmeticException e) {
// ArithmeticException 예외가 발생했을 때 실행되는 코드
System.out.println("0으로 나눌 수 없습니다.");
} finally {
// 예외 발생 여부와 상관없이 항상 실행되는 코드
System.out.println("finally 블록이 실행되었습니다.");
}