본문 바로가기

부트캠프 TIL

22.11.10 JAVA 컬렉션

-래퍼 클래스

http://www.tcpschool.com/java/java_api_wrapper

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

-제네릭 클래스에서  타입 매개변수를 여러개 사용하는 경우

class Basket<K, V> { ... }

제한된 제네릭 클래스

특정 클래스를 상속받으면서 동시에 특정 인터페이스를 구현한 클래스만 타입으로 지정할 수 있도록 제한하려면 아래와 같이 &를 사용하여 코드를 작성. 이러한 경우에는 클래스를 인터페이스보다 앞에 위치.

여기서 제네릭 클래스는 implements 따로 안쓰고 interface도 extends 쓴다는거.

interface Plant { ... }
class Flower implements Plant { ... }
class Rose extends Flower implements Plant { ... }

class Basket<T extends Flower & Plant> { // (1)
    private T item;

제네릭 메서드에서 타입 매개변수 선언은 반환타입 앞에.

public <T> void add(T element) {

제네릭 메서드의 타입 매개변수는 제네릭 클래스의 타입 매개변수와 별개의 것. 타입 매개변수로 같은 문자 써도 다른 타입 매개변수로 간주된다. 타입이 지정되는 시점이 다르기 때문.

클래스 타입 매개변수는 클래스가 인스턴스화될 때 지정.

메서드 타입 지정은 메서드 호출시 지정.

 

참고 object 클래스 메서드

https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

 

Object (Java Platform SE 7 )

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup. The general contract of fi

docs.oracle.com

 

-와잍드카드

<? extends T>는 와일드카드에 상한 제한

T의 확장 다시말해 T 포함 T 상속받는 하위 클래스 타입만 타입 매개변수로 받을수 있도록.

<? super T>는 와일드카드에 하한 제한

T의 super 다시말해 T 포함 상위 클래스만.

extends 및 super 키워드와 조합하지 않은 와일드카드(<?>)는 <? extends Object>

모든 클래스 타입을 타입 파라미터로 받을 수 있음

 

자바(Java)에서는 Object 클래스에 있는 getClass()를 통해 여러가지 클래스에 대한 메타 속성 정보를 얻을 수 있습니다.이 처럼 객체를 통해 클래스의 정보를 분석하는 것을 리플렉션(reflection - java.lang.reflect)이라 하고 주로 클래스를 동적으로 로딩하거나 디컴파일 할 때 많이 활용됩니다. 해당 객체의 정보.
자주 사용되는 메서드로는 getName()은 각 패키지명이 포함된 클래스명 getSimpleName() 패키지 경로가 포함되지 않은 클래스명만 추출해내고 getMethods(),getFields()은 각각 클래스의 메서드와 필드 목록을 뽑아냅니다. 

참조변수이름.getCass().getName() 이런 식으로 사용

 

BufferedReader/Writer

https://m.blog.naver.com/ka28/221850826909

 

[JAVA] BufferedReader 와 Bufferedwriter 사용법

BufferedReader :Scanner와 유사. Bufferedwriter :System.out.println();과 유사 둘은 모두 기존에 ...

blog.naver.com

 

-에러

컴파일 에러가 자바 컴파일러에 의해 발견되는 것이었다면, 런타임 에러는 프로그램이 실행될 때에 우리가 뒤에서 좀 더 자세히 배우게 될 자바 가상 머신(JVM)에 의해 감지

컴파일 에러가 주로 문법 요소와 관련한 신택스(syntax) 에러였다면 런타임 에러는 주로 개발자가 컴퓨터가 수행할 수 없는 특정한 작업을 요청할 때 발생

 

-에러와 예외

엄밀한 의미에서 자바에서는 코드 실행(run-time) 시 잠재적으로 발생할 수 있는 프로그램 오류를 크게 에러(error)예외(exception)(코드 수정 통해 수습 가능한 미약한 오류)으로 구분

클래스 계층도

Throwable 클래스-Errors

                             -Exceptions -Runtime Exceptions (이를 포함한 하위 클래스 :실행 예외 클래스(컴파일러가 검사 않는))

                                                 -Other Exceptions (이를 포함한 하위 : 일반 예외 클래스(컴파일러가 코드 실행 전 검사))

 

try {
    // 예외가 발생할 가능성이 있는 코드를 삽입
    // 실행할 코드 자체를 다 넣네?
} 
catch (ExceptionType1 e1 예를 들어 ArithmeticException, NullPointerException ) {
    // ExceptionType1 유형의 예외 발생 시 실행할 코드
    // e1.~ 해당 예외시 실행할 코드 요런 식으로
} 
catch (ExceptionType2 e2) {
    // ExceptionType2 유형의 예외 발생 시 실행할 코드
    // e2.~
} 
finally {
    // finally 블럭은 옵셔널, 있어도 없어도..
    // 있다면 예외 발생 여부와 상관없이 항상 실행
}

 

 

-예외 로그

https://lnsideout.tistory.com/entry/JAVA-etoString-egetMessage-eprintStackTrace-%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC

 

[JAVA] e.toString(), e.getMessage(), e.printStackTrace() 예외처리

예외(Exception)란 프로그램 실행 중 발생할 수 있는 정상적인 범위를 벗어난 경우에 처리를 하기 위한 방법입니다. 프로그램 실행 중보면 중요하게 처리해야 하는 부분중에 에러가 발생하였을때

lnsideout.tistory.com

 

-예외 전가

반환타입 메서드명(매개변수, ...) throws 예외클래스1, 예외클래스2, ... {

 

-Class.forName 사용

https://whitecold89.tistory.com/12

 

[JAVA] Class.forName 사용하기

Class.forName 사용하기 JAVA.LANG.CLASS클래스 클래스의 정보를 얻기위한 클래스 즉, 클래스의 정보를 얻어오는 클래스입니다. forName() : 물리적인 클래스 파일명을 인자로 넣어주면 이에 해당하는 클래

whitecold89.tistory.com