본문 바로가기
[Kotlin Tutorial] Kotlin 의 Type system #2 [Kotlin Tutorial] Kotlin 의 Type system #2 참조 : Kotlin in action 6.2. Primitive and other basic types 6.2.1. Primitive types: Int, Boolean, and more -Kotlin 은 primitive type 과 wrapper type 을 구분하지 않는다. -그렇다면 Int 가 object 라면 Kotlin 은 모든 primitive type 을 실제로 object 로 만드는가?당연히 그렇게 안 했다.compiler 가 대부분의 Int type 을 Java 의 primitive type 으로 변형시킨다.generic, collection 등은 원래 Java 의 Integer 형태만 담을 수 있으므로 이 경.. 2017. 8. 22.
[Effective Objective-C] #8 객체의 동등 비교를 이해하라 [Effective Objective-C] #8 객체의 동등 비교를 이해하라 출처 : Effective Objective-C -== 연산자를 사용하면 포인터 값을 비교한다.두 객체가 같은지 비교하려면 NSObject 프로토콜에 정의되어 있는 isEqual: 메서드를 사용해야 한다. -몇몇 객체는 이미 같은 클래스인지 확인된 두 객체를 비교하는 특별한 동등 확인(equality-checking) 메서드들을 제공한다. -다음 두 메서드는 NSObject 프로토콜의 핵심 동등 비교 메서드이다.- (BOOL)isEqual:(id)object;- (NSUInteger)hash; 위 두 메서드는 NSObject 클래스에 기본적인 구현이 되어 있다.구현 내용은 두 객체가 같은 객체일 뿐 아니라 포인터도 정확히 같아야.. 2017. 8. 9.
[android] Annotation Processing 에 대한 이야기 [android] Annotation Processing 에 대한 이야기 http://hannesdorfmann.com/annotation-processing/annotationprocessing101 The Basics -annotation processing 은 compile time 에 annotation 을 확인하여 어떤 action 을 하는 것을 이야기한다. -annotation processing 은 Java 5 부터 가능하다.그러나 사용할만한 API 는 Java 6 에 release 되었다. -annotation processor 는 java code 나 byte code 를 input 으로 받아서 java 파일로 output 을 생성한다.이 생성된 output 은 compile time 에.. 2017. 7. 31.
[iOS] 연락처 이미지에 접근하기 [iOS] 연락처 이미지에 접근하기 https://developer.apple.com/library/ios/documentation/AddressBook/Reference/ABPersonRef_iPhoneOS/index.html#//apple_ref/doc/uid/TP40007210-CH3-SW9 -ABPersonSetImageData // setABPersonCopyImageData // getABPersonCopyImageDataWithFormat // getABPersonHashImageData // boolean checkABPersonRemoveImageData // remove abperson, ABPersonCopyImageData, ABPersonCopyImageDataWithFormat,.. 2017. 6. 23.
[Java Concurrency] 객체공유 [Java Concurrency] 객체공유 3.1. 가시성 - 일반적으로 특정 변수의 값을 가져갈 때 다른 스레드가 작성한 값을 가져갈 수 있다는 보장도 없고, 심지어는 값을 읽지 못 할 수도 있다. 메모리상의 공유된 변수를 여러 스레드에서 서로 사용할 수 있게 하려면 반드시 동기화 기능을 구현해야 한다. - 재배치(reordering) 현상을 조심해야 한다. 재배치 현상은 특정 메소드의 소스코드가 100% 코딩된 순서로 동작한다는 점을 보장할 수 없다는 점에 기인하는 문제이다. 단일 스레드로 동작할 때는 차이점을 전혀 알아챌 수 없지만 여러 스레드가 동시에 동작하는 경우에는 확연하게 나타날 수 있다. - 동기화 기능을 지정하지 않으면 컴파일러나 프로세서, JVM 등이 프로그램 코드가 실행되는 순서를 임.. 2017. 4. 17.
[Java] What is "CopyOnWriteArrayList" [Java] What is "CopyOnWriteArrayList" http://developer.android.com/reference/java/util/concurrent/CopyOnWriteArrayList.html - Thread-safe 한 random access list. - Read 는 block 이 걸리지 않는다. addAll, clear 와 같은 aggregate operation 은 atomic 하다. - Iterator 를 사용할 때는 copy 본을 사용하기 때문에 ConcurrentModificationException 이 절대 발생하지 않는다. 대신 Iterator 가 최근 state 를 항상 반영하는 것은 아니다. - Iterator 가 copy 본이기 때문에 iterator .. 2017. 2. 22.
[Effective Java] 오버로딩(overloading)을 분별력 있게 사용하자. [Effective Java] 오버로딩(overloading)을 분별력 있게 사용하자. public class CollectionClassifier{public static String classify(Set s){return "Set";} public static String classify(List lst){return "List";} public static String classify(Collection c){return "Unknown Collection";} public static void main(String[] args){Collection[] collections = { new HashSet(), new ArrayList(), new HashMap().values() };for( Col.. 2017. 1. 16.
[Effective Java] 타입 안전이 보장되는 혼성(heterogeneous) 컨테이너의 사용을 고려하자. [Effective Java] 타입 안전이 보장되는 혼성(heterogeneous) 컨테이너의 사용을 고려하자. - 제네릭은 Set 이나 Map 같은 컬렉션, ThreadLocal 이나 AtomicReference 같은 단일 요소(single-element) 저장 컨테이너에 가장 많이 사용된다. 이 컬렉션들은 컨테이너를 매개변수화 한 것이다. 컨테이너의 특성에 따라 사용 가능한 타입 매개변수의 갯수가 자연스럽게 제한된다. - 타입 안전을 지키면서 더 큰 유연성을 갖기 위해서 ( 예를 들면 nosql 처럼 column 이 상황에 따라 다른 경우 )는 컨테이너 대신 키(key) 를 매개변수화 해주면 된다. - Class 클래스는 1.5부터 제네릭화되었다. 클래스 리터럴 타입은 Class 가 아니고 Class.. 2016. 11. 22.
[Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. [Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. - 하나 이상의 타입 매개변수(type parameter)를 선언하고 있는 클래스나 인터페이스를 제네릭 클래스 또는 제네릭 인터페이스라고 한다. 제네릭 클래스와 인터페이스를 합해서 제네릭 타입이라고 부른다. 각 제네릭 타입에서는 매개변수화 타입(parameterized type)들을 정의한다. ( 이용 ) 실 타입 매개변수(actual type parameter)들은 제네릭 타입의 형식 타입 매개변수(formal type parameter)와 각각 대응된다. ( List 에서 String 이 실 타입 매개변수이고, 기존 T 혹은 E 가 타입 매개변수이다. ) - 각 제네릭 타입에서는 원천(raw)타입을 정의하는데.. 2016. 11. 21.
반응형