일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java의정석
- 스프링입문
- JPA
- 서블릿
- 자바의정석 연습문제
- 시큐어코딩
- REGEXP_SUBSTR
- 스프링 핵심원리
- 스프링MVC
- 스프링
- 불친절한 SQL 프로그래밍
- java
- 이것이자바다
- Python
- 자바공부
- 인프런
- 김영한
- docker
- 자바연습문제
- 항해플러스 백엔드
- Spring
- 제네릭
- Secure Coding
- 스프링 부트와 JPA
- 불친절한SQL프로그래밍
- 자바의정석
- Numpy
- 분석함수
- inflearn
- 항해플러스
- Today
- Total
목록제네릭 (3)
Continuous Challenge
모든 타입으로 대체할 수 없고, 특정 타입과 자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 파라미터를 제한된 타입 파라미터(Bounded type parameter) 라고 한다. public 리턴타입 메소드(매개변수, ...) {...} 상위 타입은 클래스뿐만 아니라 인터페이스도 가능하다. public static boolean compare(T t1, T t2) { double v1 = t1.doubleValue();//Number의 doubleValue() 메소드 사용 double v2 = t2.doubleValue(); return (v1 == v2); } 위 코드는 Number 타입과 자식 클래스(Byte, Short, Integer, Long, Double)에만 대체 가능한 타입 파라..
제네릭 메소드는 타입 파라미터를 가지고 있는 메소드를 말한다. public 리턴타입 메소드명(매개변수, ...) {...} 타입 파라미터가 메소드 선언부에 정의된다는 점에서 제네릭 타입과 차이가 있다. 제네릭 메소드는 리턴 타입 앞에 기호를 추가하고 타입 파라미터를 정의한 뒤, 리턴 타입과 매개변수 타입에서 사용한다. public Box boxing(T t) {...} boxing() 메소드는 타입 파라미터로 를 정의하고 매개변수 타입과 리턴 타입에서 T를 사용한다. (매개변수 : T, 리턴 타입 : T를 내용물로 갖는 Box 객체) 타입 파라미터 T는 매개값이 어떤 타입이냐에 따라 컴파일 과정에서 구체적인 타입으로 대체된다. public class Box { //필드 private T t; //Gett..
Box 클래스를 선언하려고 한다. Box의 내용물 content 필드를 선언하려고 할 때, 타입을 무엇으로 해야 할까? Box 는 다양한 내용물을 저장해야 하므로 특정 클래스 타입으로 선언할 수 없다. 그래서 Object 타입으로 선언한다. public class Box { public Object content; } Object 타입은 모든 클래스의 최상위 부모 클래스이다. 그렇기 때문에 content 필드에는 어떤 객체든 대입이 가능하다. 문제는 Box 안의 내용물을 얻을 때이다. content 는 Object 타입이므로 어떤 객체가 대입되어 있는지 알 수 없다. 이 때 대입된 내용물의 타입을 안다면 강제 타입 변환을 거쳐 얻을 수 있다. String content = (String) box.cont..