라이브러리추가
파일 찾으러 폴더 열기
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 |