반응형

Java 14

자바 POJO (Plain Old Java Object)

Plain Old Java Object일반적으로 getter, setter 와 같이 기본적인 기능만을 가진 자바 객체 를 말한다 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고. - 마틴 파울러 그 좋아하는 사람 중 한명이 나인거 같다간단하게 요약하면 이런 말인거 같다. - 기존에 있던 소스를 가져다 쓰고 상속하고 계속해서 확장하다보니까 불필요하게 무거운 객체들이 계속 생겨났다. Spring Framework의 경우에도 저런 불필요한 의존성의 최소화해서 객체지향적인 코딩을 하는걸 목적으로 탄생한 Framework이..

JAVA 2025.03.11

자바 와일드카드(Wildcards)

In generic code, the question mark (?), called the wildcard, represents an unknown type. - Oracle Javadoc type을 모를 때 쓰는 표현을 wildcard라고 한다는데! 그러면 generic하고는 뭐가 다를까?(제네릭 개념 공부하러가기) 일단 결론부터 이야기하면 제네릭(Generic)은 Java에서 타입을 파라미터화하는 기능이고, Wildcard는 제네릭에서 특정 타입을 유연하게 처리하기 위한 기법이다. 좀 더 이해해보자 public void method1(List list)public void method2(List list)public void method3(List list) 위 3개의 method가 있다고 생각해보자..

JAVA 2025.03.11

자바 제네릭(Generics)

Generics add stability to your code by making more of your bugs detectable at compile time. – Oracle Javadoc compile time에서 버그를 감지해서 코드 안정성을 높여준다. 무슨 말인지 조금 더 이해를 해보기 위해 generics가 없다고 생각하고 소스를 구현해보자. (jdk 1.5 이전에는 없었다.)public Object method(Object obj) { return obj;}public void execute() { String str1 = (String) method("this is test"); String str2 = (String) method(1234);} 당연히 java.lang.ClassN..

JAVA 2025.03.11

자바 직렬화(Serialization)

직렬화: 객체를 스트림으로 변환하는 것역직렬화: 스트림을 객체로 변환하는 것 serialVersionUIDJVM은 직렬화와 역직렬화를 하는 시점의 클래스에 대한 버전 번호를 부여합니다.만약 그 시점에 클래스의 정의가 바뀌어 있다면 새로운 버전 번호를 할당합니다.그래서 직렬화 할 때의 버전 번호와 역직렬화를 할 때의 버전 번호가 다르면 역직렬화가 불가능하게 될 수도 있습니다. 이런 문제를 해결하려면 개발자가 직접 버전 번호를 정해주면 됩니다. class 정보가 변경되어도 같은 class로 인식하기를 원한다면 serialVersionUID를 선언해주면 된다.만약에 아래 상황을 살펴보자public class TestClass implements Serializable { String test1;}//생성자나..

JAVA 2025.03.09
반응형