Java 39

Java - Reflection

java.lang.reflect의 핵심 리플렉션 기능을 이용하면, 메모리에 적재된 클래스의 정보를 가져오는 프로그램을 작성 할 수 있다. Class가 주어지면, 해당 객체가 나타내는 클래스의 생성자, 메서드, 필드등을 나타내는 Constructor, Method, Field 객체들을 가져 올수 있으며, 이 객체를 이용하여, 클래스의 멤버 이름이나, 필드 자료형, 메서드 시그니처 정보를 얻을 수 있다. 그리고, 해당 객체를 이용하여, 연결 되어 있는 생성자, 메서드, 필드들을 Reflectively 조작 할 수 있다. 단점- 컴파일 시점에 자료형을 검사하는 이점을 포기해야 함- 리플렉션 기능을 이용하는 코드는 난잡하다.- 성능이 낮다. 리플렉션이 필요한 프로그램- 클래스 브라우저- 객체 검사도구- 코드 분..

Java - 객체 참조시 자료형을 인터페이스를 선호하라.

자료형 타입을 해당 클래스로 한다면, 확장성이 떨어진다. 대신 인터페이스 타입으로 한다면, 객체에 대한 확장성이 높아지므로 선호하도록 하자. 단, 일반 인터페이스 구현 규약에는 없는 특별한 기능인, 동기화라던지 특수 기능이 있다면,클래스로 참조하는 것이 당연하다. 그리고, 마땅한 인터페이스가 없다면 그것 또한 클래스를 참조하는 것이 당연하다. 1234 //Good List subcribers = new Vector(); //Bad Vector subcribers = new Vector();cs 무단 수정 및 배포는 금지합니다. 모든 내용은 본 블로그 운영자가 정리한 내용입니다. 참조한 정보에 대해서는 출처를 남기고 있습니다. 틀린 내용 / 오류가 포함된 내용은 댓글로 남겨주세요. choiseungho08..

Java - 변경 불가능한 객체 관한 이야기

123456789101112131415161718192021222324252627282930313233public final class Period { //객체의 컴포넌트로는 가능하다면, 변경 불가능한 객체를 사용해야 한다는 점이 핵심이다. private final Date start; private final Date end; // public Period(Date start, Date end) {// if (start.compareTo(end) > 0) {// throw new IllegalArgumentException(start + " After " + end);// }// this.start = start;// this.end = end;// } public Period(Date start, D..

상속에서 다형성 이야기

public class Product { private int price; public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public Product(int price) { // TODO Auto-generated constructor stub this.price = price; } public Product() { this.price = 100; } } int price는 가격을 의미한다. 이 것은 나중에 자식 클래스에서 물건의 값을 설정 할 것이다. public class TV extends Product{ public TV() { // TODO Auto-generated con..

for loop를 빠르게 사용하는 방법은???

우선 if, switch문들을 분기문이라고 하는데 if문에서 분기를 많이 사용하면 시간이 많이 소요 된다고 생각하지만, if문 조건안에 들어가는 비교구문에서 속도를 잡아먹지 않는 한 if문장 자체는 그리 많은 시간이 걸리지는 않는다. 이것은 살짝 알고 가자. 그리고 숫자로된 분기는 if문보다 switch문을 사용하는 것이 가독성 향상을 줄 수 있다. 반복구문은 3종류가 있다. for, while, do-while while문의 경우 조건이 잘 못된다면, 무한루프에 빠질 가능성이 있으므로 for문을 사용하는 것이 좋다. 우선 for문에 for(int i = 0; i < list.size(); i++) { } 이런 for문이 있다면 좋지 않다. collection의 list.size()메소드를 매번 호출하게..

String을 쓰면 안 되는 이유!

자바 기반 프로그래밍을 할 때 가장 많이 사용하는 클래스 object class 제외하고 나면 String class, collection class를 가장 많이 사용한다.요즘은 myBatis, ibatis, Hibernate등과 같은 데이터 매핑 프레임워크를 사용했으나 예전에는 그냥 직접 SQL을 쓰곤 했다.여기서 많이들 String을 사용하게 되는데 이 부분에서 나중에 응답속도가 늦어진다.왜 자바는 StringBuffer, StringBuilder를 써야 할까!!JDK5.0에서부터 StringBuilder 클래스는 추가 되었다. 두 클래스가 제공하는 메소드는 동일하다. 그런데 뭐가 다를까?바로 ThreadSafe를 지원하느냐 하지 않느냐의 차이로 좁힐 수 있다.StringBuffer class는 Th..

Collection Framework. ArrayList , HashSet, HashMap

컬렉션 프레임 워크란? 데이터 집합을 저장하는 표준화된 클래스를 말합니다. ^^ 컬렉션 프레임워크에 핵심 인터페이스는 세 가지로 분류 됩니다. List - 순서가 있는 데이터/중복을 허용한다. Set - 순서를 유지하지 않는 집합/ 중복을 허용하지 않는다. Map - 키와 값으로 저장/값만 중복 가능, 순서 유지하지 않는다. Vector , ArrayList를 가장 많이 사용하는데 차이점이 존재 합니다. 모두 비슷하지만, 차이점으로는 Vector는 멀티쓰레드에 대해 동기화 처리가 되고, ArrayList는 동기화 처리를 하지 않는다. -이 부분은 지금 중요한 논의가 아니다. 퍼포먼스와 관련있다. 공통점은 배열기반이란 점! 그리고 List 인터페이스를 상속받아 구현한 점! ArrayList 12345678..

반응형