<Generic>
: 제네릭은 동적으로 타입을 결정하지 않고 컴파일 시 타입이 결정되므로 보다 안전한 프로그래밍이 가능하다
: 실행 중에 타입 충돌 문제를 방지할 수 있다
: 프로그램 개발 시 타입 캐스팅 절차가 필요 없어지고 ClassCastException을 방지 할 수 있다
: 클래스 생성시 타입을 명시해 준다.
: <T> <E> <K> <V> 4개의 문자로 표시한다
<T> Type(데이터형) -> 아직 안정했을때 실행은 막 가능하게 편하게 하려고 컴파일시에만...
: 실행시 데이터 타입을 설정한다.
: ? 를 사용하면 Object로 인식한다.
: ? 를 사용하면 반드시 생성자를 통해서 데이터를 입력받는다.(세터 불가)
<E> Element(요소, 항목)
<K> Key
<V> Value
cf) 제네릭: 물컵! / 용도변경 자유자재 가능
cf) 기본형은 못들어감(int 이런 기본형 불가 / 레퍼클래스화 시킨거 적용 ->Integer 이렇게 들어가야 함.
cf) GenericTest<String> aa = new GenericTest<String>();
=> ?: 뒤에 String 제너릭을 걸었지만 ?에 의해 모두 오브젝트화 된다. 이 경우 세터 사용 불가 ,반드시 생성자를 통해서만 전달된다.
cf) 생성자와 세터는 하는일이 같다 다만 생성자는 new 할 때 한번만 수행
cf) 객체형 : Integer / 기본형 : int => 여기서 캐스팅을 int로 해도 자동으로 객체형 처리해줌 AutoBoxing =객체화
기본화 = AutoUnBoxing
jdk5.0 부터 오토박싱이 생김 그 이전에는 객체형은 객체형으로 기본형은 기본형으로 필수였다
웹이 무너지지 않은 한 자바는 안사라진다
erp 기업전산화 - c#(MS-SQL)
keras- 파이썬
웹-java
cf) 상속-다형성 : 결합도 낮추기 위해!!
부모= 자식
자식 = (자식)부모 <- 매번 캐스팅하는게 번거롭다! => 제네릭을 걸면 해소된다!!!?
<Collection> (java.util)
: 객체를 담아주는 저장 창고
: 객체 타입에 상관없이 저장 가능
: 크기 조절 가능
: 주머니, 비닐봉다리같은! 크기도 자유자재로 늘어났다가 줄어들었다가
# Enumeration
# Iterator
cf) 배열은 크기조절이 불가능함
cf) 제네릭은 한가지만 담을 수 있음
cf) 큐 , 스택, 어레이리스트 등 여기에 다 들어있음
부모는 자식꺼를 마음대로 쓸 수 없다 지금상태로는 사용 불가
===> Iterator (인터페이스임)사용 (나영석 막대기, 지정자)
오버라이딩할 메소드가 너무 많다 -> 반드시 대신해주는 클래스가 존재하고 있다~~~~
<Collection - ArrayList>
List 인터페이스의 대표적 구현 클래스
- 구현방법 : List<E> list = new ArrayList<E>();
- List라는 인터페이스한테 상속 받음. API에서 확인가능
-> 저장할 객체 타입을 E 타입 파라미터(<E>) 자리에 표기하고 기본 생성자를 호출
- 특정 인덱스의 객체 제거시 제거한 인덱스 뒤부터 모두 앞으로 1씩 당겨짐
- 인덱스번호 따로 안쓰면 순서대로 추가
- 객체 추가: list.add(" "); , 리스트명.add(인덱스명, " ");
검색: list.get(인덱스);
삭제: list.remove(인덱스);
- 리스트는 length대신 size 이용!
<컬랙션 성적 문제 - ArrayList>
- insert: -> list : new 를 새로 한다!!~!!!, 리스트가 주소를 찾는다, 객체가 가리키는 화살표는 계속 바뀐다 , 따라서 객체 이름이 바뀔 필요는 없다
- delete: 주의할 점!! -> 리스트는 삭제하면 인덱스 번호가 바뀐다~!!!!
=> Iterator 이용 꺼내놓은 버퍼 메모리에 남아있는 내용을 지운다
-> 총점 기준으로 하면 에러난다 -> sort 함수가 객체자체를 움직이게 해준다
이걸 implements 하는 클래스들은 함수 CompareTo를 쓸 수있는것이다~~~
+ 전체 출력시 리스트 추가 설명
- rs에 담긴 DTO를 가지고 있을 수 없으니 list에 담는다!!
-어레이 리스트의 부모는 리스트라서 어레이리스트 써도 된다!!
-리스트는 new가 안되기 때문에 Array리스트 이용하는 것!!
ex) List<MemberDTO> list = new ArrayList<MemberDTO>();
<자바가 제공하는 어노테이션>
1. @Override
2. @Deprecated
3. @SuppressWarnings(옵션) <- 억지로 시키는 것 cf) 제네릭은 달래는 것
옵션
1. all : 모든 경고를 억제
2. cast : 캐스트 연산자 관련 경고 억제
3. dep-ann : 사용하지 말아야 할 주석 관련 경고 억제
4. deprecation : 사용하지 말아야 할 메소드 관련 경고 억제
5. fallthrough : switch문에서의 break 누락 관련 경고 억제
6. finally : 반환하지 않는 finally 블럭 관련 경고 억제
7. null : null 분석 관련 경고 억제
8. rawtypes : 제네릭을 사용하는 클래스 매개변수가 불특정일 때의 경고 억제
9. unchecked : 검증되지 않은 연산자 관련 경고 억제
10. unused : 사용하지 않는 코드 관련 경고 억제
<계산기 마지막 숙제 원리 설명>
cf) 크기계산
배열 length
문자열 length()
리스트 size()
Collection
Set
Map : //앞에가 키 뒤에가 값이라 많이 씀 이름x
Stack
Queue
이터레이터는 자체함수가 없을 때, 삭제시에 써야함~!
'JAVA' 카테고리의 다른 글
210819(목) 자바 21일차 - 컬랙션DB연결문제풀이 / 계산기최종 (0) | 2021.08.19 |
---|---|
210818(수) 자바 20일차 - Comparable / Comparator 인터페이스 (0) | 2021.08.18 |
210813(금) 자바 18일차 - 중첩클래스 / CardLayout / adapter (0) | 2021.08.13 |
210812(목) 자바 17일차 - KeyListener /패키지 /접근제한자 (0) | 2021.08.12 |
210811(수) 자바 16일차 - 예제풀어주심: 캘린더, 계산기1차, + Login(프레임 사용 예제) (0) | 2021.08.11 |