본문 바로가기

java

Java Reflection 사용하기 (3) 이 문서는 Oracle Technology Network에 포스팅되었던 Using Java Reflection을 참고하여 작성되었습니다. 원문은 아래의 링크에서 확인하실 수 있습니다. Using Java Reflectionhttps://www.oracle.com/technetwork/articles/java/javareflection-1536171.html Class에서 정의된 함수 확인reflection을 사용하는 여러 방법들 중에서도 가장 기본적인 기능은 class에서 정의한 함수들을 확인할 수 있다는 것입니다. 구체적인 구현 내용은 아래와 같습니다. import java.lang.reflect.*; public class method1 { private int f1(Object p, int x) t..
Java Reflection 사용하기 (2) 이 문서는 Oracle Technology Network에 포스팅되었던 Using Java Reflection을 참고하여 작성되었습니다. 원문은 아래의 링크에서 확인하실 수 있습니다. Using Java Reflectionhttps://www.oracle.com/technetwork/articles/java/javareflection-1536171.html Reflection을 사용하기 위한 세팅앞서 사용한 Method와 같은 reflection class는 java.lang.reflect 패키지에 포함되어 있다. reflect class 들을 사용하기 위해서는 세 단계를 거쳐야한다. 첫번째 단계는 조작하고자 하는 java.lang.Class 객체를 가져오는 것입니다. java.lang.Class는 Ja..
Java Reflection 사용하기 (1) 이 문서는 Oracle Technology Network에 포스팅되었던 Using Java Reflection을 참고하여 작성되었습니다. 원문은 아래의 링크에서 확인하실 수 있습니다. Using Java Reflectionhttps://www.oracle.com/technetwork/articles/java/javareflection-1536171.html Reflection은 Java 언어의 특징적인 기능이라고 할 수 있습니다. Reflection을 이용하면 작성된 Java 프로그램에 대한 검사가 가능해지며, 프로그램에 대한 자체적인 검사도 가능해집니다. 예를 들어 Java class를 구성하고 있는 모든 member에 대한 확인이 가능해집니다. Java class에 직접적인 접근으로 프로그램을 검사하..
Autoboxing과 AutoUnboxing Java의 경우 기본형(Primitive types) 데이터를 직접 자료구조에 저장하지 못하는 경우, 기본형 데이터를 감싸주는 객체로 다뤄야하는 경우가 생긴다. 대표적으로 Java Collections(List, Set, Map 등)의 자료구조를 들 수 있으며, 해당 자료구조는 int, long, double 타입 등의 기본형 자료를 직접 다룰 수 없다. 이경우 직접 사용자가 기본형을 감싸주는 wrapper class 를 구현하여 사용해도 되겠지만, 일반적으로 Java에서 지원하는 Integer, Long, Double 등의 class를 사용하는 것이 편리하다. 이 클래스들은 일반적으로 생성자 함수에 데이터를 넣고, -value 함수를 이용하여 데이터를 꺼내오게 되는데 이를 Boxing, Unboxing..
18. 최소 공통 조상 (LCA: Lowest Common Ancestor) 2 앞에서 최소 공통 조상(이하 LCA) 알고리즘을 통해 트리 내 두 노드의 공통 조상을 찾는 방법을 설명드린 적이 있었습니다. 트리 내 두 노드의 가장 가까운 조상을 찾는 LCA 알고리즘을 통하여 노드가 공유하는 조상 노드 중 가장 깊은 노드를 찾는 방법을 알게 되었습니다. 가장 원초적 형태의 LCA 알고리즘도 물론 강력한 기능을 갖고 있는 알고리즘이지만 이를 강화시킨 버전의 LCA 알고리즘을 이번 챕터에서 말씀드리려고 합니다. 크기가 그렇게 크지 않은 트리에서는 특정 노드에서 조상을 찾기 위해 올라가는 과정이 그렇게 멀지 않습니다. 두 노드를 비교하여 깊이가 더 깊은 노드의 깊이를 상대적으로 깊이가 얕은 노드에 맞춰주고, 부모로 올라가는 과정을 몇 번 거치면 쉽게 LCA를 구할 수 있었습니다. 문제가 되..
Properties Class 사용 프로그램에서 사용하는 Property들을 효율적으로 관리하기 위해서 Property 파일을 따로 만들어서 관리하는 경우, Properties Class를 사용하면 편리하게 정보를 불러올 수 있다. property 파일은 내부적으로 key=value의 형식으로 저장되어 있어야하며, #이 앞에 붙어있는 값인 경우는 주석처리되어 로드되지 않는다. 로드된 정보는 getProperty 함수를 이용하여 가져올 수 있고 값이 없었던 경우라면 null로 반환된다. 만일 default 값을 주고 싶으면 getProperty(key, defaultValue) 형식으로 처리하면 된다. import java.io.FileInputStream; import java.io.FileNotFoundException; import j..
Java xml parser import java.io.IOException; import java.util.logging.Logger; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class XMLParser { private static final String URL = "query.xml"; private static fi..
Java Queue 구현 class Queue { private final int MAX_SIZE = 100000; private int head; private int tail; private Object[] array; public Queue() { this.head = 0; this.tail = -1; array = new Object[MAX_SIZE]; } public void add(Object o) { array[++tail] = o; } public Object peek() { return array[head]; } public Object poll() { return array[head++]; } public boolean empty() { return head > tail; } }