본문 바로가기

전체 글

Java에서 직렬화(Serializable)가 불가능한 경우 1. 직렬화가 불가능한 경우 1) 직렬화가 불가능한 객체를 포함한 경우 2) 하위 클래스는 직렬화를 구현했지만 상위 클래스에서는 직렬화가 구현되지 않은 상태에서 상위 클래스의 생성자에 매개변수가 있는 경우 2. 직렬화 불가능한 클래스들 1) 이벤트 어댑터 2) 이미지 필터 3) AWT 클래스 4) beans 5) Socket 6) URLConnection ?1234567891011121314import java.io.IOException;import java.io.Serializable;import java.net.Socket; /** * Serializable은 구현했지만 직렬화할 수 없는 객체를 포함한 경우 */ public class MyNetwork implements Serializable { .. 더보기
Java enum java enumo 클래스처럼 보이게 하는 상수¡ 예를 들어 Config 라는 클래스를 만들고 맴버로 KVM,XenServer를 두고 싶음- 기존의 클래스로 구현하는 방식 (Config.java)public class Config { public static final int KVM = 1; public static final int XenServer = 2;}- 위와 같이 클래스로 구현한다.- 여기에서의 문제점은 1,2 값이 KVM, XenServer 만을 가르키지 않는다- 또한 3,4 와 같은 숫자가 들어 올 수도 있다 ¡ 이러한 문제점을 해결하기 위해서 JAVA 1.5 에서 enum 이 추가 되었다.public enum Config {KVM,XenServer} ¡ 출력public class Hell.. 더보기
Java Varargs (가변인자) 사용법 7.4.5 Varargs(자바 5.0) 자 바 5.0에서 소개되는 기법 중에서 가변인수(Varargs)라는 것이 있다. 가변인수라는 것은 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다. 가변인수가 없던 시절에는 가변인수 대신 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다. □ 가변인수(Varargs 자바 5.0) ◇ 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다. □ 가변인수가 없던 시절 ◇ 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다. 우선 컬렉션을 이용해서 가변인수를 사용하던 기법부터 보도록 하자. 다음은 인수를 Vector에 넣어서 메서드로 전달하는 예이다. ▒ 컬렉션을 이용한 가변인수(메서드) 1234567public class VarArgs.. 더보기
Dom4j를 이용한 XML Parsing Dom4j를 이용한 XML Parsing [ 예제 코드 ] import java.net.URL;import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader;public class Foo { public Document parse(URL url) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(url); return document; } } Iterator 사용하기"document"(SAXReader나 DocumentHelper를 통해 만들어진 XML객체)는 자바의 표준 Iterat.. 더보기
ArrayList와 HashMap의 차이점 (Java Collection) 1. Collection List 계열 : AbstractList, ArrayList, LinkedList, Vector Map 계열 : AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Set계열 : AbstractSet, HashSet, LinkedHashSet, TreeSet Collection, List, Map,Set은 모두 구현되지 않은 interface 계열로 내려가 구현된 Class를 사용해서 정의 ex) List a = new ArrayList(); * 다형성(부모는 여러가지 자식의 형태로 나타날 수 있다). List a = new List(); * error :.. 더보기
Java Garbage Collection 가비지 컬렉션Garbage Collection이란, 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭 혹은 개체를 찾아 자동적으로 다시 사용 가능한 자원으로 회수하는 것을 말한다. 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터Garbage Collector라고 하며, 최초의 가비지 컬렉터는 1958년에 존 매카시John McCarthy에 의해 리습Lisp 언어의 일부로 구현되었다. 가비지 컬렉션은 약자로 GC라고 부르기도 한다. 일반적인 가비지 컬렉터 알고리즘(Algorithm)은 다음과 같이 동작한다 1. 더 이상 프로그램에서 사용하지 않을 개체Object를 찾아낸다. 2. 해당 개체가 사용하는 리소스를 회수한다. 위치 : 힙 메모리 영역에 존재(JVM은 New/Young 영역과 O.. 더보기
Interface vs Abstract Interface 와 abstract * 공통점1) abstract와 interface는 그자체가 instance화 될수가 없다. 즉, TestInterface t = new TestInterface(), TestAbstract a = new TestAbstract(); 둘 다 컴파일을 해보면, 에러를 발생시킨다. 2) Prototype만 있고 Body가 없는 메소드를 멤버함수로 가진다. 소스1에서 보는 바와 같이 TestInterface, TestAbstract 는 함수 선언부는 존재하지만, 내용이 없는 함수들을 포함하고 있다. [소스1] public interface TestInterface { public static int num = 8; public void func1(); public void.. 더보기
중첩 클래스(Nested Class) [자바 4대 중첩 클래스] 자바 4대 중첩 클래스 1. 중첩 클래스 (Inner Class) □ 정의 - 하나의 클래스 내부에 또 다른 클래스가 내포되어 있는 상태. (클래스 관리의 효율을 높임.) □ 특징 - 중첩되는 클래스는 하나 이상 가능. - Outer 클래스 멤버를 Inner 클래스에서 사용 가능. - Outer 클래스에서 Inner 클래스 멤버 사용 불가능. (사용하고 싶으면 객체를 직접 발생 시켜야 함.) - 일반 중첩 클래스 내부에서는 static과 관련된 멤버를 선언할 수 없음. □ 형식 class Outer { 내용부; class Inner { 내용부; } } □ 중첩 클래스 객체 생성 Outer 객체1 = new Outer(); // Outer 클래스 객체 생성. Outer.Inner 객체2 = 객체1.new .. 더보기