본문 바로가기
[Kotlin Tutorial] Generics - Chap9. Generics 참조 : Kotlin in action 9.1. Generic type parameters -Java 와 기본적으로 generic 사용법은 동일하다. -Type Inference 는 가능하지만 명시적으로 써야 하는 케이스도 있다.val authors = listOf(“Dmitry”, “Svetlana”) // type inference 가능 val readers : MutableList = mutableListOf() // type inference 불가능, 명시적 선언val readers = mutableListOf() -Kotlin 에서는 raw type generic 을 사용할 수 없다. ( Java 로 치자면 그냥 List ) 9.1.1. Generic functions and properties.. 2017. 9. 5.
[Kotlin Tutorial] Kotlin 소개 - Kotlin : what and why [Kotlin Tutorial] Kotlin 소개 - Kotlin : what and why 참조 : Kotlin in Action -Kotlin 은 Java platform 을 targeting 한 새로운 프로그래밍 언어.Java 코드와 함께 쓰일 수 있다.Android 개발 뿐만 아니라 Server-side 개발에도 쓰일 수 있다. -Java 의 iib, framework 와 함께 쓰일 수 있고, Java 와 비교해 Performance 도 거의 동일하다. 1.1. A Taste of Kotlin -http://try.kotl.in 을 통해 코드 실습을 할 수 있다. -data class Person(val name: String, val age: Int? = null) fun main(args: A.. 2017. 7. 12.
[Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. [Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. - Serializable 인터페이스를 구현할 때는 결함과 보안 문제가 생길 가능성이 커진다. 정상적인 생성자 대신 언어 영역 밖의 메커니즘을 사용해서 인스턴스가 생성되기 때문이다. 그런 위험을 현저히 줄이는 방법이 직렬화 프록시 패턴(Serialization proxy pattern) 이다. - 직렬화 프록시 패턴은 직렬화 가능 클래스의 private static 중첩 클래스를 설계한다. 직렬화 프록시(serialization proxy) 라고 하는 inner 클래스는 외곽 클래스를 매개 변수 타입으로 하는 단일 생성자를 갖는다. 그리고 이 생성자는 자신의 인자로부터 데이터만 복사한다. 일관성 검사나 방어 복사도 할.. 2017. 3. 28.
[Effective Java] 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자. [Effective Java] 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자. - readResolve 메소드는 readObject 메소드에서 생성한 인스턴스를 다른 인스턴스로 바꾸어준다. 만일 역직렬화되는 객체의 클래스에서 readResolve 메소드를 올바르게 정의하면 그 객체가 역직렬화된 후 그 결과로 새롭게 생성된 객체에 대해 이 메소드가 자동 호출되며, 이 메소드에서 반환하는 객체 참조가 역직렬화로 새롭게 생성된 객체 대신 반환된다. - 싱글톤의 경우 다음과 같은 방법으로 싱글톤을 유지할 수 있다. private Object readResolve(){// Deserialization 으로 생성된 새로운 녀석은 GC 된다.return INSTANCE;} - readRe.. 2017. 3. 27.
[Effective Java] 컴파일 경고 메세지가 없게 하자. [Effective Java] 컴파일 경고 메세지가 없게 하자. - 제네릭을 사용해서 프로그램을 작성하면 컴파일 경고 메세지를 많이 마딱뜨릴 수 있다. unchecked cast, unchecked method call, unchecked generic array generation, unchecked conversion 등. - 가능한 모든 unchecked 경고 메세지를 없애자. 이는 Runtime 시 ClassCastException 예외가 생기지 않음을 의미한다. - 특정 경고 메세지는 없앨 수 없지만, 그 메세지를 유발시킨 코드가 타입 안전을 보장한다면 @SuppressWarnings("unchecked") Annotation 을 사용해서 경고 메시지를 안 나타나게 억제할 수 있다. Suppre.. 2016. 11. 24.
[Effective Java] Comparable 인터페이스의 구현을 고려하자. [Effective Java] Comparable 인터페이스의 구현을 고려하자. - compareTo 메소드는 Comparable 인터페이스에 존재하는 메소드이다. compareTo 메소드는 equals 메소드와 유사한 특성을 갖는다. 차이점은 두 객체가 동일한지 비교에 덧붙여 순서까지 비교할 수 있으며, 제네릭 타입을 지원한다. - Comparable interface 를 구현하면, Arrays.sort 와 같은 메소드를 손쉽게 쓸 수 있고, TreeSet 과 같은 크기 비교를 사용하는 Collection 들에서도 손쉽게 사용할 수 있다. - 자바 라이브러리의 모든 값 클래스들은 Comparable 인터페이스를 구현한다. - 알파벳 순, 숫자 순, 날짜 순과 같은 자연율을 갖는 값 클래스를 작성한다면 .. 2016. 10. 14.
[Java] Reflection Tutorial - Dynamic Class Loading and Reloading. Java, Reflection Tutorial - Dynamic Class Loading and Reloading. Java 에서 dynamic 하게 class 를 load 혹은 reload 할 수 있다. The ClassLoader Java 의 모든 class 는 ClassLoader의 subclass 를 이용하여 로드된다.한 class 가 load 될 때 다른 연관된 ( refer 된 ) class 들도 모두 함께 recursive 하게 load 된다. The ClassLoader Hierachy 새로운 class loader 를 작성할 떄면 반드시 Java 의 기본 ClassLoader 를 상속하여 이용해야 한다. 먼저 parent ClassLoader 를 이용하여 load 를 시도하고, paren.. 2014. 1. 9.
반응형