☕️ java
-
Reflection API ?☕️ java 2023. 2. 9. 19:43
📌 Reflection API 💡 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API 📌 Reflection API 기능 Person.java public class Person { private String name; protected String address; public int age; } 필드 접근 Class 클래스의 getFields() 메서드 public으로 선언된 필드만 조회가 가능 Class 클래스의 getDeclaredFields() 메서드 Test @Test void get_field() { Object person = new Person(); Field[] getFields = person.getClass().get..
-
커스텀 validation 만들기☕️ java 2023. 1. 28. 17:46
스프링 프레임워크가 기본적으로 제공하는 Validator Annotation으로 충분하지 않을 수 있다. 필요에 따라 직접 Validator를 구현해야 하는 경우가 생길 수 있다. ❗Annotation Custom Constraint Annotation을 만들 때에는 message groups payload 위 3개는 꼭 정의를 해주어야 한다. @Constraint(validatedBy = PasswordValidator.class) @Target({METHOD, FIELD, ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface PasswordValidation { String message() default "Password i..
-
equals / hashCode☕️ java 2022. 12. 7. 18:06
equals ❓ hashCode ❓ equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다. 따라서 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. equals() Object의 equals() public class Object { @IntrinsicCandidate public Object() {} ... public boolean equals(Object obj) { return (this == obj); } ... } 기본적으로 equals() 메소드는 2개의 객체가 동일한지 검사하기 위해 사용한다. 2개의 객체가 참조하는 것이 동일한지를 확인 - 동일성(Equality)을 비교하는 것 즉, 2..
-
CheckedException 과 UncheckedException☕️ java 2022. 10. 10. 14:57
에러(Error) 와 예외(Exception) 에러(Error)는 시스템에 비정상적인 상황이 발생한 경우를 말한다. 시스템이 종료되어야 할 수준의 상황 애플리케이션 코드에서 잡을 수 없다. → 개발자가 미리 예측하여 방지할 수 없다. ex) OutOfMemoryError, ThreadDeath, StackOverflowError 등 예외(Exception)은 개발자가 구현한 로직에서 발생한 실수 또는 사용자의 영향에 의해 발생한다. 개발자가 **미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)**를 해야한다. Checked Exception과 Unchecked Exception으로 구분할 수 있다. ✔️ Checked Exception RuntimeException을 ..
-
가비지 컬렉션(GC) ❓☕️ java 2022. 10. 10. 13:40
🗑️ Garbage Collection (GC) 가비지 컬렉션은 자바의 메모리 관리 방법중 하나이다. JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역중 필요없게된 메모리 영역을 주기적으로 삭제하는 프로세스 C 나 C++에서는 이런 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리를 할당하고 해제해줘야 한다. 반면, Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대신해주어 개발자는 메모리 관리 메모리 누수(memory leak) 문제에 대해 완벽하게 관리하지 않아도 되고 개발에 집중할 수 있다. 메모리 누수 (memory leak) 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상 할당된 메모리를 사용한 다음 반환하지 않고 누적이 되어 메모리 누수 발생 장 / 단점 장점..
-
Java version 별 특징☕️ java 2022. 10. 9. 20:01
Java 8 Lambda stream interface default method Optional new Date, Time API Lambda Java 8 이전 익명 클래스의 사용을 람다를 이용해 더 간결하고 직관적으로 구현을 할 수 있게 되었다. 람다식 (Lambda Expression) 함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현을 하면 메소드 이름이 필요 없어, 람다식은 익명 함수의 한 종류라고 볼 수 있다. 불필요한 코드를 줄이고, 가독성을 높였다. 함수형 인터페이스의 인스턴스를 생성하여 함수를 변수처럼 선언한다. Runnable runnable = () -> System.out.println("Hello, World!"); Stream Java 8은 str..
-
HttpURLConnection☕️ java 2022. 10. 7. 23:31
URL(보통 HTTP 프로토콜을 사용)을 통해 서버와 통신하는 Java 프로그램을 개발하기 위해 URLConnection 및 HttpURLConnection 클래스를 사용한다. 파일, 웹 페이지 업로드 및 다운로드 HTTP 요청 및 응답 전송 및 검색 URLConnection URLConnection은 Java 애플리케이션과 URL 간의 연결 관련 모든 클래스의 수퍼클래스이다. 웹을 통해 데이터를 주고 받는데 사용한다. URLConnection 클래스는 일반적인 URL에 대한 API를 제공한다. 특징 URLConnection은 리소스에 연결하기 전에 구성되어야 한다. URLConnection 인스턴스를 재사용될 수 없다. 각 리소스에 대한 커넥션 마다 다른 인스턴스를 사용해야 한다. HttpURLConn..
-
Java JSON 파싱☕️ java 2022. 10. 7. 19:02
Java를 이용하여 JSON 파싱을 해보자 JSON Parser JSON 파일을 땡겨와서 이를 저장하기 위해서 JSON 데이터를 사용해야 한다. JSONObject JSONArray 를 사용할 수 있다. JSON-Simple json-simple 라이브러리는 JSON 파싱을 지원한다. org.json.simple.JSONObject build.gradle implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' JSONObject 객체(주로 String)을 Json 객체로 바꿔주거나 Json 객체를 새로 만드는 역할 JSONArray Json들이 들어 있는 Array JSONObject 사용 jsonO..