코딩

    제네릭

    제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 위 코드의 p.infor와 p2.infor의 데이터 타입은 결과적으로 아래와 같다. p1.infor : String p2.infor : Stringbuilder 각각의 인스턴스를 생성할 때 사용한 사이에 어떤 데이터 타입을 사용했느냐에 달려있다. 제네릭의 사용 이유 : 위의 코드는 StudentPerson과 EmployyPerson가 사실상 같은 구조를 가지고 있다 중복이 발생하고 있는 것이다. 중복을 제거해보자. 클래스 Person의 생성자는 매개변수 info의 데이터 타입이 Object이다. 따라서 모든 객체가 될 수 있다. 그렇기 때문에 위와 EmployeeInfo의 객체가 아니라 String이 와도 컴파일 에..

    참조와 복제

    복제 : 전자화된 시스템의 가장 중요한 특징은 복제다. 현실의 사물과 다르게 전자화된 시스템 위의 데이터를 복제 하는데는 비용이 거의 들지 않는다. 바로 이러한 특징이 소프트웨어를 기존의 산업과 구분하는 가장 큰 특징일 것이다. 프로그래밍에서 복제가 무엇인가를 살펴보자. 결과는 당연하다. 값을 변경한 것은 변수 b이기 때문에 변수 a에 담겨있는 값은 그대로이다. 변수 b의 값에 변수 a의 값이 복제된 것이다. 이를 그림으로 표시하면 아래와 같다. new로 생성하는 자료형들은 참조 데이터형이다. 참조 : run value와 renReferenced의 놀라운 차이점이 있다. 변수 b에 담긴 인스턴스의 id 값을 2로 변경했을 뿐인데 a.id의 값도 2가 된 것이다. 이것은 변수 b와 변수 a에 담긴 인스턴스..

    상수와 enum2

    enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. 위의 예제에서는 Fruit와 Company가 말하자면 열거인 셈이다. 이러한 패턴을 자바 1.5부터 문법적으로 지원하기 시작했는데 그것이 열거형이다. 이전 코드를 enum으로 바꿔보자. switch에서 case Furuit.APPLE를 쓰지 않는 이유는 위의 type의 데이터 타입이 Furuit이기 때문에 쓸 필요가 없는 것이다. enum은 많은 곳에서 사용하던 디자인 패턴을 언어가 채택해서 문법적인 요소로 단순화시킨 것이라고 할 수 있다. if(Fruit.APPLE == Company.APPLE){ System.out.println("과일 애플과 회사 애플이 같다); } 이 코드는 여기..

    상수와 enum

    상수는 변하지 않는 값. 아래에서 좌항이 변수 우항이 상수 int x = 1; 1 = 2; 그래서 이와같은 구문은 있을 수 없다. 이와 같이 코드를 짜면 주석이 지워지거나 로직과 멀리 떨어져 있으면 어느 기능을 하는지 알 수 없다. 또한 57, 34, 93의 의미를 모르는 문제도 있다. 코드를 이해해야 하는 사람은 상당한 어려움에 봉착하게 된다. final은 변수의 값이 한번 지정되면 바뀌지 않는 키워드다 즉 상수가 된다. static는 클래스의 변수 ( 하나의 저장공간을 공유 ) 인스턴스 마다 값이 바뀔 필요가 없기에 static을 사용 이렇게 코드를 짜면 주석설명이 필요 없다. enum의 배경 : 애플리케이션이 커지는 과정에서 원래는 과일에 관한 상수만 필요했는데 필요에 의해 기업 이름에 대한 상수가..