본문 바로가기

JAVA공부(이것이 자바다)

중첩클래스 이어서

라이브러리추가

파일 찾으러 폴더 열기

 

 

add external jar

 

중첩클래스의 바깥클래스 접근

인스턴스 멤버 클래스 - 바깥 클래스의 모든 필드와 메소드

정적 멤버 클래스 - 바깥 클래스의 정적 필드와 정적 메소드

바깥클래스의 객체를 얻으려면 

바깥클래스이름.this

이렇게 써야한다.

 

중첩 인터페이스

UI프로그램에서 이벤트를 처리할 목적으로 많이 활용된다.

static - Button객체 없이 ClickListener인터페이스를 사용가능 하다.

public class Button{

	public static interface ClickListener {
    	void onClick();
   	}
}

익명객체

이름이 없는 객체

익명 자식 객체 - 클래스를 상속해서 만듦

new 부모생성자(매개값,...){

}

익명 구현 객체 - 인터페이스를 상속해서 만듦

new 인터페이스(){


}

 

라이브러리

프로그램 개발시 활용할 수 있는 클래스와 인터페이스를 모아놓은 것 jar와 같은 파일

● 운영시

- java 명령어 실행할때 -classpath로 제공한다.

java -classpath C:\이클립스워크스페이스\자바프로젝트\jar파일;. app.Main

- classpath환경변수에 경로를 추가한다. -> 고급시스템설정에서 환경변수로 들어간다.

● 개발시

- 이클립스 프로젝트의 build path에 추가한다.

 

모듈

패키지 관리기능까지 포함된 라이브러리이다. 일부 패키지를 은닉하여 접근할 수 없게끔 할수 있다. 모듈별로 조립하능 방식을 사용하므로 재사용성 및 유지보수 하기 좋다 

module-info.java에 모듈에 대한 의존 설정을 하여 밖에 보여주거나 얻어올 수 있다.

requires ->프로젝트 얻어오기

exports -> 프로젝트 공개하기

transitive -> 나를 참조하고 있는 모듈은 내가 참조하는 모듈도 참조할 수있도록 의존설정 하

 

리플렉션(동적)

실행도중에 타입을 검사하고 구성멤버를 조사하는 것이다.

opens ~ to~

 

자바표준모듈

필요한 라이브러리만 선택해 배포해서 작은 용량의 프로그램을 만들 수있다. 임베디드 기기에서 돌아갈 파일같은 것

 

예외

잘못된 사용 또는 코딩으로 인한 오류를 말한다.

최상위예외 exception

예외가 던져지는 곳 throwable

try{

//예외가 발생할 만한 문장

}catch(Exception e){

//예외 발생시 실행할 문장
}finally{

//무조건 실행문장//catch에서 return으로 종료해도 실행된다.
}

e.getMessage()

예외가 발생한 이유만을 리턴

e.toString()

예외의 종류까지 리턴

e.printStackTrace()

예외가 어디서 발생했는지도 추적

 

catch문이 여러개일때 하나만 동작한다. 또 부모예외를 먼저쓰면 자식을 한번도 거치지 않기때문에 부모 예외와 함께 쓸때는 자식 예외를 먼저 써줘야한다.

 

리소스

데이터를 제공하는 객체 --> 이는 사용후 닫아줘야한다. 안그러면 불안정한 상태로 남아있게된다.

 

이렇게 try괄호에 리소스를 여는 코드를 작성하면 try블록이 정상완료 됐거나 예외가 발생하면 자동으로 close()메소드가 호출된다.

try(FileInputStream fis = new FileInputStream("file.txt")){


}catch(IOException e){

}

이렇게 AutoCloseable인터페이스를 상속받아 스트림을 닫아주는 close를 재정의 해줄 수 있다.

public class FileInputStream implements AutoCloseable {

    @Override
    public void close() throws Exception{ ... }

}

 

 

예외 떠넘기기

메소드를 호출한 곳으로 예외를 떠넘길 수 있다. 예외는 최종적으로 JVM이 처리하게된다. ->콘솔에 예외의 내용출력

리턴타입 메소드명(매개변수, ...)throws 예외클래스1, 예외클래스2...{

}

 

사용자 정의 예외 클래스

 

public class xxxException extends Exception | RuntimeException {

public xxxException(){//기본생성자

}

public xxxException(String message){//예외 메세지를 입력받는 생성자
	super(message);
}

예외메세지 생성자는 부모생성자에게 예외객체의 공통 메소드인 getMessage()의 리턴값으로 사용하기 위해서 선언해준다.

 

예외 직접 발생시키기 

throw문을 try catch 안에 넣어주던가 메소드의 throws Exception으로 넘겨준다.

throw new Exception("예외 메세지");

'JAVA공부(이것이 자바다)' 카테고리의 다른 글

java.base 이어서  (0) 2023.06.08
java.base 모듈  (2) 2023.06.07
인터페이스 이어서  (0) 2023.06.02
상속 이어서  (0) 2023.05.31
상속  (0) 2023.05.30