일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Java
- 클래스
- 박싱
- 제너릭
- dependency
- 내장객체
- 제네릭
- unboxing
- 콜렉션
- Scanner
- bootstrap
- suvlet
- boxing
- start.spring.io
- 자동형변환
- maven
- 컬렉션
- 언박싱
- 스프링
- wrapper
- 메소드
- Short
- https://start.spring.io
- 인텔리제이
- 싱글톤
- Jenkins
- 무한
- 루프
- 싱글턴
- 빌드
Archives
- Today
- Total
Developer Gonie
[4주차] 65. 제네릭 타입 및 제네릭 메소드* 본문
* 제네릭(Generic) 타입이란?
'제네릭 타입'은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다.
* 제네릭 메소드란?
'제네릭 메소드'는 매개 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말한다.
* 제네릭 사용시 주의할 점
주의할 점으로 구체적인 자료형을 지정할 땐 < > 안에 클래스 이름을 기입해줘야 하는데
기본자료형의 경우 레퍼클래스의 이름을 넣어줘야 한다.
ex) int 자료형의 경우 -> <Integer>
API 도큐먼트를 보면 제네릭 표현이 많기 때문에 이를 이해하지 못하면 API 도큐먼트를 정확히 이해할 수 없다.
또한, 제네릭을 사용하면 코드의 재사용성을 높일 수 있어 효율적이다. 이것 말고도 장점이 있는데 지금은 이 정도만 이해하자.
구체적인 타입은 객체를 생성할 때 지정한다.
코드
//class Top{
// private int date;
//
// public void setDate(int date) {
// this.date = date;
// }
//
// public int getDate() {
// return this.date;
// }
//}// Top
// 정수도받고 실수도받고 문자열도 받는 클래스를 재사용성 높게 만들고 싶을 때
// 클래스명뒤에 <> 를 넣어 아직 확정되지 않은 자료형이 있음을 알림 -> 이런형태를 '제네릭'이라고 함.
class Top<T>{
private T date;
public void setDate(T date) {
this.date = date;
}
public T getDate() {
return this.date;
}
}//Top
public class Ex09_01_Generic {
public static void main(String[] args) {
Top<String> t1 = new Top<String>(); // <>에 자료형을 넣어 자료형을 확정시킴
t1.setDate("orange");
String result1 = t1.getDate();
System.out.println(result1);
// 제네릭은 자료형을 지정할 때 기본 자료형은 클래스를 사용해야해서 int 대신 래퍼클래스 이름을 넣어줌.
Top<Integer> t2 = new Top<Integer>();
t2.setDate(300); // 오토박싱이 이뤄져 t3.setDate(new Integer(300)) 과 같음
int result2 = t2.getDate();
System.out.println(result2);
}
}
실행결과
orange
300
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
[4주차] 67. 컬렉션, List 인터페이스를 상속받아 구현된 ArrayList 타입(순서,index O, 중복데이터 O)*** (0) | 2022.06.02 |
---|---|
[4주차] 66. 컬렉션, 배열의 한계점을 보완하여 동적으로 객체들을 관리하기 위한 클래스들*** (0) | 2022.06.02 |
[3주차] 64. 날짜, 일자, 시간 정보를 원하는 포멧대로 출력하는 SimpleDateFormat클래스 (0) | 2022.06.02 |
[3주차] 63. 날짜, 일자, 시간 정보를 얻는 Calendar 클래스 (0) | 2022.06.02 |
[3주차] 62. 구분자를 기준으로 하는 문자열 파싱 방법(StringTokenizer 클래스, String 클래스)*** (0) | 2022.06.02 |
Comments