목록Java (34)
hrming
토비의 스프링 강의를 듣다가, 테스트 관련하여 AssertJ라는 라이브러리를 알게되어, JUnit과의 차이점을 확인해봤다. ■ JUnit 의 assertThat- JUnit 4에서는 assertThat을 제공하며, 이는 Hamcrest 라이브러리를 기반으로 함- 주로 org.junit.Assert.assertThat 또는 org.hamcrest.MatcherAssert.assertThat을 사용함- Hamcrest의 Matcher 객체와 함께 사용해야 함 ( is(), not(), containsString() 등)- JUnit 5에서는 기본 제공되지 않으며, 별도로 Hamcrest를 추가해야 함. 비교 항목org.junit.Assert.assertThatorg.hamcrest.MatcherAssert..
특정 클래스에 있는 모든 필드명을 가져오려고 알아보니, Class객체 안에 있는 getDeclaredFields() 메서드를 사용해서 가져올 수 있었다. 🙂 Class 객체를 이용하면,- 클래스에 대한 모든 정보(클래스의 정의된 멤버의 이름이나 개수 등)를 런타임 단에서 코드 로직으로 얻을 수 있다.- 특정 클래스를 인스턴스화 할 수 있고, 메서드를 호출 할 수 있는 ..등 보다 동적인 코드를 작성할 수 있게 된다. ▶ 이렇게, 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메소드, 타입, 변수, ...)에 접근할 수 있게 해주는 자바 기법을 Reflection API 라고 부른다.참고 및 출처 :https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EB%88%84..
https://earth-ing.tistory.com/entry/Java-%EC%9D%B4%EB%AF%B8%EC%A7%80File%EB%A5%BC-Base64%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0#google_vignette [Java] 이미지(File)를 Base64로 변환하기이미지를 Base64로 변환하기 서버에 저장되어있는 이미지를 웹화면에 뿌려주어야할 때 base64로 변환하여 표현하는 방법을 사용한다 이 값을 만들기 위해 필요한 로직을 알아보자 📌 Parameter 1. 파earth-ing.tistory.com
toString() & String.valueOf()는 Object값을 String형으로 변환할때 사용하는 메소드이다.두 메소드의 차이점은 null값에 따른 NPE(NullPointException)의 발생 유무이다. Object의 값이 null일 때,toString() : NPE발생, Object의 값이 String이 아니어도 출력String.valueOf() : 파라미터로 null이 오면 "null"이라는 문자열을 출력. 즉, NPE 발생하지 않음. 참고 및 출처 : https://dev-coco.tistory.com/101 [Java] toString() 과 String.valueOf() 비교 및 차이점toString()과 String.valueOf()는 Object 값을 String 형으로 변환할..
상수를 정의할 떄, private static final을 사용하는 이유 private static final을 선언한 변수를 사용하면,재할당하지 못하며메모리에 한 번 올라가면 같은 값을 클래스 내부의 전체 필드, 메서드에서 공유하기 때문이다.상수는 변하지 않는 값이기 때문에, 호출할 때마다 새롭게 인스턴스화할 필요가 없다. 참고 및 출처 : https://zorba91.tistory.com/275 [Java] 왜 private 상수는 관습적으로 private static final로 선언할까?private static final과 private final의 차이 public으로 사용하는 상수 타입은 enum을 이용하고 있다. 클래스 내부에서만 간단하게 사용할 상수를 만들 때, 아무 생각 없이 priva..
1. 오류 & 에러 오류(error)는 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료시킨다. 이러한 오류는 개발자가 예측하여 처리할 수 없는 것이 대부분이므로, 오류에 대한 처리는 할 수 없다. 예외(exception)는 오류와 마찬가지로 실행 중인 프로그램을 비정상적으로 종료시키지만, 발생할 수 있는 상황을 미리 예측하여 처리할 수 있다. 따라서 개발자는 예외 처리(exception handling)를 통해 예외 상황을 처리할 수 있도록 코드의 흐름을 바꿀 필요가 있다. 2. 예외 처리 (exception handling) 2-1. try / catch / finally 문을 사용 try { 예외를 처리하길 원하는 실행 코드; } catch (e1) { e1 예외가 발생할..
1. 인터페이스 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미 - 자바는 다중 상속을 지원하지 않음 - 자바는 '인터페이스'를 통해서 다중 상속을 지원함 - 자바에서 추상 클래스는 추상 메서드뿐만 아니라, 생성자, 필드, 일반 메서드도 포함할 수 있다. 하지만, 인터페이스는 오로지 '추상 메서드'와 '상수'만을 포함할 수 있음. 1-1. 인터페이스 선언 접근제어자 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메소드이름(매개변수목록); /* 인터페이스의 모든 필드는 public static final이어야 하며, ..
1. 추상 클래스 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스 abstract class 클래스이름 { ... abstract 반환타입 메소드이름(); ... } : 미완성 설계도라고 표현하기도 한다. : 추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하고 있으므로, 인스턴스를 생성할 수 없다. 추상 클래스는 먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스를 생성할 수 있게 된다. : 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해준다. ChatGPT 추상 클래스를 사용하여 다형성을 구현할..