본문 바로가기

언어

[Effective java] 생성자 대신 정적 팩터리 메소드를 고려하라 일반적으로 객체 생성은 클래스의 생성자를 활용한다. 이 외에 정적 팩터리 메소드를 사용해서 객체를 반환할 수도 있다. 정적 팩토리 메서드의 장점 1. 이름을 가질 수 있다 어떠한 객체를 생성하는지, 설명해줄 수 있다. 2. 호출될 때 마다 인스턴스를 새로 생성하지는 않아도 된다. 불필요한 객체 생성을 매번 할 필요 없다면 미리 만들어둔 인스턴스를 재활용할 수 있다. 3. 반환 타입의 하위 타입 객체를 반환할 수 있다. 즉, 다형성을 응용할 수 있다. 4. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 3의 장점을 기반으로 매개변수가 어떤 값이 들어오느냐에 따라 다른 클래스의 객체를 반환할 수 있다. 5. 정적 팩터리 메소드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된..
Autoboxing And Unboxing reference: https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html What it Autoboxing and unboxing? Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes the other way, this is called unboxing. 자바..
Enum의 static field 접근 enum을 일반 자바 클래스로 구현하려면 어떻게 해야할까? 아마도 각 상수를 static으로 선언하고 생성자를 private으로 하지 않을까 싶다. 실제로 enum의 상수들은 static final로 구현된다. 이 기본적인 개념을 간과하고 있었다. (enum을 너무 생각없이 쓰게된걸까..?) 아래 코드는 에러가 발생한다. 왜 발생할까? package enumTest; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { System.out.println("hellop"); System.out.println(Fruit.fruitMap); } } enum Fruit {..
jre와 jdk 출처 : https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre jre : 컴파일된 자바 프로그램을 실행하기 위해 필요한 모든 것들.예) jvm, java command, java class library 등등.. 하지만 jre는 프로그램 개발을 위한 것은 아니다. 오직 실행을 위해 필요하다. jdk : java 개발을 위해 필요한 모든 것으로, jre를 포함하며, 추가적으로 다른 것들도 포함되어 있다.예) java compiler and tools like javadoc
메소드 시그니처와 오버로딩 오버라이딩 Method Signature 메소드 시그니처는 메소드를 구분하는 역할을 한다. Two methods or constructors, M and N, have the same signature if they have the same name, the same type parameters (if any) (§8.4.4), and, after adapting the formal parameter types of N to the the type parameters of M, the same formal parameter types 두 메소드는 다음 조건을 만족하면 같은 signature를 가진다고 할 수 있다. 메소드 이름 파라미터 수 파라미터 타입의 순서 Example 아래 두 메소드는 같은 Signature..