목록Tutorials/Java (15)
KoreanFoodie's Study
플러그인 정의 모든 플러그인은 META-INF/MANIFEST.INF 파일을 포함한다. MANIFEST 파일은 ID, 버전, 이름 등의 정보를 갖고 있다. Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Favorites Plug-in Bundle-SymbolicName: com.qualityeclipse.favorites; singleton:=true Bundle-Version: 1.0.0 Bundle-ClassPath: favorites.jar Bundle-Activator: com.qualityeclipse.favorites.FavoritesPlugin Bundle-Vendor: Quality Eclipse Bundle-Localizati..
자바는 C++에 비해 API 사용이 더 수월한 편이다. 먼저 java.lang 패키지에 속하는 주요 클래스와 간략한 용도를 찾아보자. Object 클래스 클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않더라도 암시적으로 java.lang.Object 클래스를 상속하게 된다. 따라서 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다. 객체 해시코드 ( hashCode() ) 객체 해시코드란 객체를 식별하는 하나의 정수값을 말한다.
이클립스 실전 플러그인 개발 소스코드입니다.
사용자 정의 예외와 예외 발생 프로그램을 개발하다 보면 자바 표준 API에서 제공하는 예외 클래스만으로는 다양한 종류의 예외를 표현할 수가 없다. 애플리케이션 서비스와 관련된 예외를 애플리케이션 예외 (Application Exception)이라고 한다. 이는 개발자가 직접 정의해서 만들어야 하므로 사용자 정의 예외라고도 한다. 사용자 정의 예외 클래스 선언 사용자 정의 예외 클래스는 컴파일러가 체크하는 일반 예외로 선언할 수도 있고, 컴파일러가 체크하지 않는 실행 예외로 선언할 수도 있다. 일반 예외로 선언할 경우 Exception을, 실행 예외로 선언할 경우 RuntimeException을 상속하면 된다. public class SOME_Exception extends [ Exception | Run..
자동 리소스 닫기 자바 7부터는 try-with-resources를 사용하면 예외 발생 여부와 상관없이 상요해던 리로스 객체(각종 입출력 스트림, 서버 소켓, 각종 채널)의 close() 메소드를 호출해서 안전하게 리소스를 닫아준다. 리소스라는 말이 여러 가지 의미가 있겠지만 여기서는 데이터를 읽고 쓰는 객체라고 생각해 두자. FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); } catch (IOException e) { ... } finally { if (fis != null) { try { fis.close(); } catch (IOException e) {} } } 파일을 사용할 때는 try-catch를 사용해서 clo..
예외와 예외 클래스 JVM 실행에 문제가 생겼을 때, 우리는 에러를 마주하게 된다. 자바에서는 에러 이외에 예외(exception)라고 부르는 오류가 있는데, 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료하지만, 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외는 두 가지 종류가 있다. 하나는 일반 예외(Exception)이고, 다른 하나는 실행 예외(Runtime Exception)이다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 자바 소스를 컴파일 하는 과정에서 예외 처리 코드가 필요한지 검사하기 때문이다. 만약 예외 처리 코드가 ..
익명 객체 익명(anonymous) 객체는 이름이 없는 객체를 말한다. 익명 객체는 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다. 익명 객체는 필드의 초기값이나 로컬 변수의 초기값, 매개 변수의 매개값으로 주로 대입된다. UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 익명 객체가 많이 활용된다. 익명 자식 객체 생성 부모 타입으로 필드나 변수를 선언하고, 자식 객체를 초가값으로 대입할 경우를 생각해보자. 우선 부모 클래스를 상속해서 자식 클래스를 선언하고, new 연산자를 이용해서 자식 객체를 생성한 후, 필드나 로컬 변수에 대입하는 것이 기본이다. class Child extends Parent { } // 자식 클래스 선언 class A { P..
중첩 클래스 중첩 클래스를 사용하면 코드의 복잡성을 줄일 수 있다! 중첩 클래스는 클래스 내부에 선언되는 위치에 따라서 두 가지로 분류된다. 클래스의 멤버로서 선언되는 중첩 클래스를 멤버 클래스라고 하고, 메소드 내부에서 선언되는 중첩 클래스를 로컬 클래스라고 한다. 멤버 클래스는 객체가 사용 중일때는 언제든지 재사용이 가능하지만, 로컬 클래스는 메소드 실행 시에만 사용되고, 메소드가 실행 종료되면 없어진다. public class A { class B {...} // 인스턴스 멤버 클래스 static class C {...} // 정적 멤버 클래스 void method() { class D {...} } // 로컬 클래스 } 멤버 클래스도 하나의 클래스이기 때문에 컴파일하면 바이트 코드 파일(.clas..
인터페이스 상속 인터페이스도 다른 인터페이스를 상속할 수 있다. 인터페이스는 클래스와는 달리 다중 상속을 허용한다. 다음과 같이 extends 키워드 뒤에 상속할 인터페이스드을 나열할 수 있다. public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2 {...} 하위 인터페이스를 구현하는 클래스는 하위 인터페이스의 메소드 뿐만 아니라 상위 인터페이스의 모든 추상 메소드에 대한 실체 메소드를 갖고 있어야 한다. 그렇기 때문에 구현 클래스로부터 객체를 생성하고 나서 다음과 같이 하위 및 상위 인터페이스 타입으로 변환이 가능하다. 하위인터페이스 변수 = new 구현클래스(...); 상위인터페이스1 변수 = new 구현클래스(...); 상위인터페이스2 변수 = new 구현클래..
인터페이스의 역할 인터페이스는 객체의 사용 방법을 정의한 타입이다. 개발 코드가 중간에 인터페이스를 두는 이유는, 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서이다. 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다. 따라서 개발 코드 측면에서 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점이 있다. 인터페이스 선언 인터페이스는 "~.java" 형태의 소스 파일로 작성되고 컴파일러(javac.exe)를 통해 "~.class" 형태로 컴파일되기 때문에 물리적 형태는 클래스와 동일하다. public interface InterfaceName { ... } 인터페이스는 상수와 메소드만을..