전체 글
-
[Java] @BeforeAll과 static block의 차이백엔드/Java 2023. 3. 1. 09:00
책에서 메모리 구조를 공부하다가 갑자기 테스트 어노테이션을 찾아보라는 말이 나왔다. @BeforeClass를 찾아보라고 했는데, JUnit4가 @BeforeClass이고, JUnit5는 @BeforeAll을 사용한다. @BeforeAll @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @API(status = STABLE, since = "5.0") public @interface BeforeAll { } - 어노테이션이나 메서드에 @BeforeEach를 붙일 수 있다. - 런타임(프로그램 종료 전까지)동안 어노테이션이 남아있다. - JavaDoc을 생성할 때..
-
[Java] Enum 내부 코드 확인하기백엔드/Java 2023. 2. 22. 08:34
사다리 미션을 하는데 리뷰어님이 Enum 내부 코드를 통해 답변을 해준 것이 기억났다. 그래서 Enum 코드를 확인하는데 다른 내부 코드들보다 만만해보여서 해석을 해보기로 했다. 전체적인 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 public abstract class Enum implements Comparable, Serializable { private final String name; public final String n..
-
[Java] 표준 어노테이션백엔드/Java 2023. 2. 21. 08:00
자바 코드를 보다가 내부 코드가 궁금해져서 확인해봤는데, 이런 내용의 코드가 있었다. @Test는 어떤 동작을 수행하길래 이런 어노테이션들이 붙어 있는 것일까? 그래서 찾아보니 자바의 정석을 통해 어노테이션을 정리하는 사람들이 많았다. 표준 어노테이션은 크게 두가지로 나뉜다. 하나는 어노테이션을 정의하는데 사용하는 메타 어노테이션, 하나는 일반 어노테이션이다. 이 글에서는 메타 어노테이션부터 설명한다. 1. 메타 어노테이션 오라클 공식 홈페이지 튜토리얼을 확인해보면 메타 어노테이션은 다른 어노테이션에 사용되는 어노테이션이라고 나와있다. 어노테이션을 정의하는 어노테이션이라고 생각하면 될 것 같다. [@Retension] 이 어노테이션이 들어있으면 어디까지 어노테이션 내용을 저장하는지 대한 내용을 지정할 수..
-
[후기] 자바의 정석후기/책 후기 2023. 2. 20. 10:26
[읽은 챕터] Ch.1 자바를 시작하기 전에 Ch.6 객체지향 프로그래밍 1 Ch.7 객체지향 프로그래밍 2 Ch.8 예외처리 Ch.11 컬렉션 프레임워크 Ch.12 제네릭(generic), 열거형(enum), 어노테이션(annotation) Ch.13 쓰레드 Ch.14 람다와 스트림 Ch.15 입출력 Ch.16 네트워킹 잠까지 줄여가면서 읽었더니 거의 일주일만에 다 읽었다. 금요일날 샷 4개 추가라는 롱 블랙을 마셔도 피곤해서 주말에 많이 쉬었다. 페어들을 만나면서 내가 기본기가 참 많이 부족하다는 느낌을 많이 받았다. 그래서 어차피 레벨1에서 객체지향, 자바에 대해 배우니까 첫 공부 시작으로 자바의 정석을 읽기로 했다. 결과는 정말 읽기 잘했다는 생각이다. 더 자세히 알아봐야겠다는 내용을 키워드도 정..
-
[Selenium] AutoCloseable이 없는 이유공부/etc 2023. 2. 19. 23:12
자바의 정석 예외처리 파트를 읽고 있는데, try-with-resources문을 사용하는 것이 좋아보였다. 실제로 이게 좋은 것인가?하고 찾아보니 이펙티브 자바에도 이런 내용이 있어서 개선할 코드가 있으면 직접 수정하는 것도 좋아보였다. 그래서 작년에 했던 산학프로젝트에 ChromeDriver를 try-with-resources로 적용해 PR을 보내려고 했는데, 빨간줄이 나와 내부 코드를 확인해보니 AutoCloseable 인터페이스를 상속하지 않은 상태였다. 기여를 해볼만하다는 생각이 들어서 셀레니움 깃허브에 들어갔는데, 이미 나와 같은 생각을 했던 사람들이 여러명 존재했다. 사실 별 기대조차 안했다. 내가 이걸 발견할 정도면 이미 다른 사람들이 발견했을테니... 이유 1. close() 이름 중복 내..
-
[Java] var는 사용해도 되는 것일까?백엔드/Java 2023. 2. 13. 00:05
자동차 경주 미션 2단계의 코드 예시에서는 var를 사용하고 있다. 자바에서 var를 보는 것은 처음이었고, 자바스크립트에서 var는 사용을 지양하라고 나와있어서 선입견 때문에 이걸 과연 사용해도 될까? 라는 생각이 들었다. 1. 자바스크립트에서 var 사용을 지양하는 이유 [호이스팅 현상] console.log(foo); undefined var foo = 1; console.log(foo); 1 자바스크립트는 변수를 설정하면 변수가 속하는 유효 범위(scope) 안에 최상단으로 올려져 선언을 하게 된다. 사실상 중간에 변수를 선언해도 최상단에 선언하는 것과 같은 효과라서 위와 같은 코드가 나와도 첫번째 줄의 console.log(foo);가 작동하게 된다. [중복 선언] var foo = 1; var..
-
[Java] final을 자주 사용하는 이유백엔드/Java 2023. 2. 12. 22:10
우테코를 진행하는데 코치님도 그렇고, 리뷰어님도 final을 자주 사용해서 왜 final을 많이 사용하는지 궁금해졌다. 내가 final을 사용하는 이유는 상수 아니면 멤버 변수에만 사용했는데, 메서드 인자에도 final을 최대한 붙이는 편이라고 해서 관련된 내용을 찾아보았다. 1. final 키워드 자바에서 final 키워드는 변수, 메서드, 클래스에 적용할 수 있다. 변수 - 단 한 번만 초기화가 가능하다. - 원시 타입에 final을 붙이면 값을 변경할 수 없다. - 객체 타입에 final을 붙이면 다른 객체로 변경하지 못하는 것이지, 객체 내부 데이터는 변경할 수 있다. - 메서드 인자에 final을 붙이면 원시 타입, 객체 타입에 따라 각각의 규칙이 적용된다. 메서드 - 상속 받은 클래스의 어떤 ..
-
[후기] 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴후기/책 후기 2023. 1. 29. 23:23
책 이름처럼 객체지향에 대한 내용을 배운 뒤에 대표적인 디자인 패턴에 대해 알려주는 책이다. 책은 크게 3가지 파트로 나뉜다. 1) 객체지향 '왜 객체지향적으로 코드를 작성해야 하는지?', '이론을 실전에 적용하려면 어떻게 해야하는지?'에 대한 답을 코드를 보며 이해할 수 있다. 다만 아쉬운 점은 이 책은 객체지향 개념만을 중점으로 설명하는 책은 아니다. 그렇기 때문에 객체지향 입문서를 읽어본 후에 책을 읽어보는 것이 더 도움이 되지 않을까 생각한다. 2) SOLID, DI와 서비스 로케이터 객체지향에 대한 기본적인 내용을 배웠다면, 객체지향 설계 원칙인 SOLID와 의존성 주입(DI), 서비스 로케이터에 대해 알아보게 된다. 다른 파트의 내용도 잘 작성했지만, 개인적으로 여기 파트가 핵심만 잘 파악해서..