본문 바로가기

전체 글100

제네릭 타입의 상속과 구현 // Parent.java public class Parent { private kind; private model; public void setKind(T kind) { this.kind = kind; } public void setModel(M model) { this.model = model; } public T getKind() { return kind; } public M getModel() { return model; } } class Tv{} // Child.java public class Child extends Parent { private C company; public void setCompany(C company) { this.company = company; } public C g.. 2020. 4. 6.
제한된 타입 파라미터 숫자를 연산하는 제네렉 메소드는 매개값으로 Number 타입 또는 하위 클래스인 Byte, Short, Integer, Long, Double 의 인스턴스만 가져야 한다. 이것이 제한된 타입 파라미터가 필요한 이유이다. 제한된 타입 파라미터를 사용하려면 타입 파라미터 뒤에 extends로 클래스명이나 인터페이스명을 명시하면 된다. public 리턴타입 메소드(매개변수, ...) {...} 타입 파라미터에 지정되는 구체적인 타입은 상위 타입이거나 상위 타입의 하위 또는 구현 클래스만 가능하다. 주의할 점은 메소드의 중괄호 {} 안에서 타입 파라미터 변수로 사용 가능한 것은 상위 타입의 멤버(필드, 메소드)로 제한된다. 다음 제한 타입 파라미터를 적용한 예제이다. // Util.java public clas.. 2020. 4. 6.
제네릭 메소드 제네릭 메소드는 매개 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말한다. 사용 방법은 리턴 타입 앞에 기호를 추가하고 타입 파라미터를 기술한 다음, 리턴 타입과 매개 타입으로 타입 파라미터를 사용하면 된다. public Method method(T t) {...} 제네릭 메소드를 호출하는 코드는 두 가지 방법이 있다. 리턴타입 obj = method("string"); // 명시적으로 타입 파라미터를 지정 리턴타입 obj = method("string"); // 타입 파라미터를 추정 코드에서 타입 파라미터를 구체적으로 명시하는 방법과 컴파일러가 매개값을 보고 타입을 추정하도록 하는 방법이 있다. 다음은 제네릭 메소드를 사용하는 예제이다. // Util.java public class Util {.. 2020. 4. 6.
제네릭 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었다. 제네릭은 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 한다. 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭은 컴파일 시에 타입을 체크하는데 이것은 실행 시 타입 에러가 나는 것보다 컴파일 시에 미리 타입을 체크해서 에러를 방지하는 것이 좋기 때문이다. 또한 제네릭을 사용하면 타입 변환을 제거한다. // 제네릭을 사용하지 않은 경우. List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // list에 있는 문자열을 가져오기 위해서.. 2020. 4. 6.
멀티 스레드 개념 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 한다. 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하면 프로세스라고 불린다. 하나의 애플리케이션이 여러 프로세스를 만들기도 한다. 예를 들면 크롬이라는 애플리케이션을 두 개 실행했다면 두개의 크롬 프로세스가 생성된 것이다. 멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것을 말한다. 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 멀티 태스킹이 반드시 멀티 프로세스를 뜻하는 것은 아니다. 한 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 애플리케이션도 있다. 예를 들면 미디어 플레이어는 동영상 재생과 소리 재생 두 작업을 동시에 하고, .. 2020. 4. 4.
예외 처리 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서는 에러와 동일하다. 그러나 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 일반 예외와 실행예외가 있다. 일반 예외는 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 필요한지 검사하는 것이다. 만약 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 실행 예외는 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외이다. 컴파일 시 예외 처리를 확인하는 차이일 뿐, 두 가지 예외는 모두 예외 처리가 필요하다. 실행 예외 실행 예외는 자바 컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처.. 2020. 4. 3.