✅ enum 공부
✅ 네이버 코딩 컨벤션 설정에서 indent 에 탭 대신 스페이스 쓰도록 설정 변경 (+ checkstyles-rules.xml 파일도 수정)
스페이스 사용 시 경고
에서 탭 사용 시 경고
로 변경✅ try-with-resources 기능 알아보기
✅ 알고리즘 풀기
enum은 열거형(enumerated type)이라고 한다.
연관된 상수들의 집합이다.
class Fruit{
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
private Fruit(){}
}
enum
을 이용해서 아래와 같이 단순하게 만들 수 있다.enum Fruit{
APPLE, PEACH, BANANA;
}
getColor()
)enum Fruit{
APPLE("red"),
PEACH("pink"),
BANANA("yellow");
private String color;
Fruit(String color){
this.color = color;
}
String getColor(){
return this.color;
}
}
//--------------------------------------
System.out.println(Fruit.APPLE.getColor());
// red
values()
를 이용해 enum 멤버를 열거 할 수도 있다. for(Fruit f : Fruit.values()){
System.out.println(f+", "+f.getColor());
}
/*
APPLE, red
PEACH, pink
BANANA, yellow
*/
아래는 다른 분의 Sokoban 게임 코드에서 봤던 enum 활용 예시이다 .
각 인스턴스에 여러 변수값을 줄 수도 있다.(direction, reverse, message)
(출처 : https://github.com/jinan159/codesquad_2022_sokoban)
try(..)
에서 선언 된 객체들에 대해 try
가 종료될 때 자동으로 자원을 해제해준다. 즉,
try
구문 사용 시close()
를 따로 해줄 필요가 없게 해주는 기능
java.lang.AutoCloseable 을 구현하는 객체들에 대해서만 사용이 가능한데, 목록 을 보니 왠만해서는 가능하다고 보면 될 것 같다.
try(..)
구문의 괄호 안에 사용할 객체들을 선언해주면 된다.public class ResourceClose {
public static void main(String[] args) {
try (Scanner sc = new Scanner(new File("input.txt")))
{
System.out.println(sc.nextLine());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
try-catch-finally
구문을 이용하면 아래와 같다. (finally 에서 따로 close()
를 호출해줘야한다)public class ResourceClose {
public static void main(String[] args) {
Scanner sc = null;
try {
sc = new Scanner(new File("input.txt"));
System.out.println(sc.nextLine());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (sc != null) {
sc.close();
}
}
}
}
이렇듯 try-with-resources
를 사용하면 close()
를 따로 해주지 않아도 된다.
;
로 구분하여 여러개의 객체를 사용 할 수도 있다.public class ResourceClose {
public static void main(String[] args) {
try (Scanner sc = new Scanner(new File("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
System.out.println(sc.nextLine());
System.out.println(br.readLine());
} catch (Exception e) {
e.printStackTrace();
}
}
}
앞으로는 마음 편하게 try-with-resources
를 사용하자
📚참고
https://codechacha.com/ko/java-try-with-resources/
https://hianna.tistory.com/546
배움의 즐거움이 이런것인가!
🟥 Stream 공부