JAVA/Generic
-
제네릭 변수의 참조와 상속의 관계JAVA/Generic 2020. 10. 18. 22:12
아래와 같은 프로그램이 있다고 하자. 위의 OhMethod함수의 인자로 전달될 수 있는 참조 값의 자료형은 두 가지이다. 1. FruitBox의 인스턴스 참조 값 2. FruitBox를 상속하는 인스턴스의 참조 값 위의 클래스 Fruit와 Apple 클래스의 상속 구조에서 FruitBox 클래스는 OhMethod의 인자가 될 수 없다. 반드시 키워드 extends를 이용해서 상속이 명시된 대상만 인자로 전달 될 수 있다. ... extends FruitBox 다음과 같은 구조이다. 일단 보고 넘기자. 아래에 이 내용이 나온다. 와일드 카드와 제네릭 변수의 선언 와일드 카드란, 이름 또는 문자열에 제한을 가하지 않음을 명시하는 용도로 사용하는 특별한 기호이다. 위의
-
제네릭 메소드와 배열JAVA/Generic 2020. 10. 18. 21:09
배열도 인스턴스이므로 제네릭 매개변수에 전달이 가능하다. 하지만, 다음과 같은 문장을 쓸 수 없다. 아래와 같이 ShowArrayData함수의 매개변수로 배열 인스턴스를 선언하면, 매개변수에 전달되는 참조 값을 배열 인스턴스의 참조 값으로 제한할 수 있다. 그리고 이렇게 되면 참조 값은 배열 인스턴스의 참조 값임이 보장되므로 []연산을 허용한다. 아래와 같이 []연산이 필요하면 매개변수의 선언을 통해서 전달되는 참조 값을 배열의 참조 값으로 제한해야 한다. 예제 프로그램 실행결과 소스 코드 더보기 public class Exam1 { public static void main(String[] args) { String[] stArr = new String[] { "Hi", "I am so happy", ..
-
매개변수의 자료형 제한JAVA/Generic 2020. 10. 18. 20:52
개념 매개변수의 자료형 제한 예제1 프로그램 실행결과 소스 코드 더보기 interface SimpleInterface { public void ShowYourName();//추상 메소드 } class UpperClass { public void ShowYourAncestor(){System.out.println("UpperClass");} } class AAA extends UpperClass implements SimpleInterface { @Override public void ShowYourName()//메소드 정의 { System.out.println("AAA"); } } class BBB extends UpperClass implements SimpleInterface { @Override p..
-
제네릭 메소드JAVA/Generic 2020. 10. 18. 18:30
1. 제네릭 메솓의 정의와 호출 자바는 클래스 전부가 아닌 특정 메소드에 대해서만 제네릭 선언하는 것을 허용한다. 프로그램 실행결과 제네릭 메소드의 호출 과정에서 전달되는 인자를 통해서 제네릭 자료형을 결정할 수 있으므로 자료형의 표현은 생략 가능하다. 소스 코드 더보기 class AAA { @Override //toString함수는 Object 클래스의 메소드 public String toString() {return "Class A";} } class BBB { @Override //toString함수는 Object 클래스의 메소드 public String toString() {return "Class B";} } class InstanceTypeShower { int showCnt = 0; //제네..
-
제네릭 클래스의 이해와 설계JAVA/Generic 2020. 10. 18. 18:17
1. 제네릭 클래스가 필요한 이유 아래와 같이 클래스가 있다고 하자. 위의 클래스에서 구현의 편의만 놓고 보면, FruitBox 클래스가 더 좋아 보인다. 그런데, FruitBox 클래스는 자료형에 안전하지 못하다는 단점이 있다. AppleBox와 OrangeBox는 구현의 불편함이 따르는 단점이 있다. 그러나 자료형에 안전하다는 장점이 있다. AppleBox, OrangeBox의 장점인 자료형의 안전성과 FruitBox의 장점인 구현의 편의성을 한데 모은 것이 바로 제네릭이다. 자료형의 안전성에 대한 예제1 프로그램 실행 및 에러 발생 문구 위에서 실행 중간에 Class Casting Exception이 발생하는데 위와 같이 실행 중간에 발생하는 예외는 컴파일 과정에서 발견되는 오류 상황보다 발견 및 ..