본문 바로가기
[Java] Unbounded Wildcards [Java] Unbounded Wildcards 참조 : http://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html - Unbounded Wildcard 는 List 와 같이 type 을 ? 로 사용하는 경우를 이야기한다. - Unbounded Wildcard 는 다음 상황에서 유용하게 쓰인다. 1. Object class 를 넣는 것과 같은 용도인 경우. 2. Collection 을 parameter 로 받으면서 List.size, List.clear 등과 같이 type 에 dependency 가 없는 Collection 자체의 함수들만 호출하는 경우. - List 는 List 의 subtype 이다. - List 는 Lis.. 2016. 11. 23.
[java] readResolve, writeReplace 뭐 하는 녀석일까? [java] readResolve, writeReplace 뭐 하는 녀석일까? 참조 : http://www.javalobby.org/java/forums/t17491.html singleton 의 경우 serialization 을 하면서 singleton 유지가 안 될 수 있다. Serialization 은 readResolve() 라는 private method 를 통해서 instantiation 을 진행한다. 이 녀석은 serialization 의 결과로 return 되는 object 를 이야기한다. public final class MySingleton {private static final MySingleton INSTANCE = new MySingleton();private MySingleton.. 2016. 11. 3.
[Java] writeObject 와 readObject 는 무엇인가? [Java] writeObject 와 readObject 는 무엇인가? 참조 : http://www.javablogging.com/what-are-writeobject-and-readobject-customizing-the-serialization-process/ - serialize 하고 싶은 객체에 Serializable interface 만 implements 해주면 serialize 가 가능하다. -ObjectOutputStream 을 이용하여 stream 형태로 만들어 file 에 쓰거나 전송할 수 있다. - transient 나 static 으로 마크되지 않은 필드들은 모두 serialized 된다. - 기본적인 serialization 에 추가적으로 어떤 조치를 취하고 싶다면 아래와 같이 w.. 2016. 10. 25.
[Java] Generic explicit type parameter 이야기 [Java] Generic explicit type parameter 이야기 참조 : http://shanhe.me/2011/09/11/explicit-type-parameters-for-generic-methods 참조 : http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html - 자바 7, 8 로 version up 이 되면서 조금 더 강화된 compiler 로 type inference 도 강화되어 explicit type parameter 를 지정할 일이 거의 없다. -public static Map toHashMap(Map map) {return new HashMap(null == map ? Collections.em.. 2016. 10. 18.
[Effective Java] clone 메소드는 신중하게 오버라이드 하자. [Effective Java] clone 메소드는 신중하게 오버라이드 하자. - Cloneable 인터페이스는 복제를 허용하는 객체라는 것을 알리는 목적으로 사용하는 믹스인 인터페이스( mixin interface ) 이다. 믹스인 인터페이스이기 때문에 자신이 clone method 를 가지고 있는 것도 아니다. Object 의 clone 은 Cloneable 을 implement 하지 않으면 사용할 수 없다. - Cloneable 을 implements 한 class 에 clone 을 호출하면, 해당 객체의 복제본을 만들어 반환한다. 복제 객체는 원본 객체와 같은 필드를 가지며 각 필드의 값도 복사된다. 하지만 reference 를 가진 녀석들은 deep copy 가 아닌 soft copy 를 수행한다.. 2016. 10. 10.
[Effective Java] 쓸모 없는 객체 참조를 제거하자. [Effective Java] 쓸모 없는 객체 참조를 제거하자. - 자바와 같이 가비지 컬렉션을 자동으로 해주는 언어는 메모리 관리를 따로 해줄 필요가 없다고 생각하기 쉬우나, 이는 틀린 생각이다. GC 의 원리에 대해 정확히 이해하고 메모리 관리를 해주어야 한다. 다만 그 메모리 관리하는 범위가 C, C++ 과 같은 GC 가 없는 언어들에 비해 더 간단할 뿐! - 자바에서도 메모리 누출(memory leak)이 쉽게 발견된다. 메모리 누수가 생기면, 성능저하의 형태로 서서히 나타난다. GC 작업이 증가하거나, 메모리 할당과 회수 횟수가 빈번해지기 때문이다. 심하면 디스크 페이징 현상이 나타나기도 하고, 아주 극단적으로는 OutOfMemoryError 가 발생한다. 메모리 누수의 무서운 점은, 특정 객체.. 2016. 1. 4.
Long 을 Int 로 casting 할 때 다음을 고려하자. Long 을 Int 로 casting 할 때 다음을 고려하자. -casting 하려는 long 값이 양수, 음수를 모두 사용한다면, 그리고 충분히 큰 값을 사용한다면함부로 int 로 casting 해서는 안된다. - 안전한 down casting 다음과 같이 하면 좋다. public static int safeLongToInt(long l) {if (l Integer.MAX_VALUE) {throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");}return (int) l;} -값 손실을 고려한다면 IllegalArgumentException 대신 .. 2015. 12. 28.
[android] toLowerCase() 에 대한 고찰 ( 터키어, 이스라엘어, 리투아니아어 ) [android] toLowerCase() 에 대한 고찰 ( 터키어, 이스라엘어, 리투아니아어 ) -터키어, 이스라엘어, 리투아니아어 환경에서 개발할 일은 거의 없겠지만...영어에 대해 toLowerCase() 를 호출하면, 이상한 현상이 생기는 것을 목격할 수 있을 것이다. - toLowerCase() 는 Locale 을 지정할 수 있는데, Locale 을 지정해주지 않으면 기본적으로 Locale.getDefault() 를 호출하게 된다. 이 getDefault() 는 현재 단말에 설정된 언어에 기반한다. - 이스라엘어 ( Azeri ) 와 터키어 ( Turkish ) 의 경우는 영문자 I ( 아이 ) 가 점이 없는 ı 로 변경된다. 리투아니아어 ( Lituanian ) 의 경우는 I 뿐만 아니라 J .. 2015. 12. 21.
[android] expandable listview tutorial [android] expandable listview tutorial activity_main.xml view_list_group.xml view_list_item.xml MainActivity.javapackage com.example.test; import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widge.. 2015. 11. 1.
반응형