Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 파이썬
- 신경망파이썬
- C알고리즘
- 소프트맥스함수
- BOJ
- 머신러닝
- 밑바닥부터시작하는딥러닝
- 버퍼오버플로우
- 보안
- 딥러닝파이썬
- 백준알고리즘
- 인공지능
- 스트림암호
- 정보보안
- 항등함수
- 신경망구현
- 딥러닝
- 백준
- C언어알고리즘
- 8086CPU레지스터
- FTZlevel10
- BOF
- 활성화함수파이썬
- 달고나bof
- c언어
- 파이썬신경망
- 신경망 학습
- 알고리즘
- C언어 알고리즘
- 신경망
Archives
- Today
- Total
HeeJ's
[04] Generic :: Java 본문
모든 객체를 담을 수 있는 Object 타입의 컬렉션은 실행하기 전, 클래스에 어떤 객체를 담았는지 알 수 없는 문제점이 나타남.
제네릭(Generic)
: 하나의 코드를 다양한 타입의 객체에 재사용하는 객체 지향 기법
클래스, 인터페이스, 메서드를 정의할 때는 타입을 변수로 사용.
**클래스를 선언하여 객체를 생성할 때, 구체적인 타입을 기재한다.
장점) 컴파일 시, 타입을 점검하기 때문에 실행 도중 발생할 오류 사전 방지
제네릭 클래스의 선언
class 클래스이름<타입매개변수> {
필드;
매서드;
}
* 타입 매개 변수
E - 원소(Element)
K - 키(Key)
N - 숫자(Number)
T - 타입(Type)
V - 값(Value)
ex.
public class c1<T> {
private T data;
public void setdata(T data){
this.data = data;
}
public T getdata(){
return data;
}
}
위의 클래스를 선언할 때, 구체적인 타입을 기재한다.
c1<Integer> intClass = new c1<>(); //Integer 타입만 저장
c2<String> strClass = new c1<>(); //String 타입만 저장
* 타입 매개변수로 기초 타입을 사용할 수 없다.
Wrapper 클래스 사용해야함.
(int -> X, Integer -> O)
Raw 타입
: 타입 매개변수가 없는 제네릭 클래스 (-> Object 타입이 적용된다.)
이전 버전과 호환성을 유지하기 위해 지원
Box<String> b1 = new Box()<>; //제네릭
Box b2 = new Box(); //Raw 타입. <>로 명시하지 않으면 Object와 똑같아진다.
Raw 타입의 객체는 어떤 타입의 객체든 추가할 수 있다.
반환 시, 어떤 타입이 반환되는지 알 수 없으므로 타입 변환이 필요하다.
다중 타입 매개변수
정의.
public class Entry<K, V> {
private K key;
pricate V value;
public Entry(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue(){
return value;
}
}
선언.
public class EntryClass {
public static void main(String[] args) {
Entry<String, Integer> e1 = new Entry<>("김철수", 20);
Entry<String, String> e2 = new Entry<>("일석", "이조");
}
}
'<Programming> > <JAVA>' 카테고리의 다른 글
[03] 메서드 오버로딩, 메서드 오버라이딩 :: Java (0) | 2020.06.12 |
---|---|
[02] 상수, 데이터 입력 :: Java (0) | 2020.06.11 |
[01] Package Explorer :: Java (0) | 2020.06.11 |