일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- UWP
- Kotlin
- 코틀린
- android push
- 프로그래머스
- Java
- dart
- C
- Rxjava2
- C/C++
- Django REST framework
- flutter firestore
- Android P
- 알고리즘
- Python
- Django REST
- livedata
- RxAndroid
- C++
- android architecture component
- 안드로이드 구글맵
- Flutter TextField
- kodility
- NDK
- 안드로이드
- Django REST Android
- RxJava
- FLUTTER
- Android
- mfc
- Today
- Total
목록Java,Android (120)
개발하는 두더지
[Effective Java 규칙27] 가능하면 제네릭 메서드으로 만들 것Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 제네릭을 사용하면 클래스 뿐만 아니라 메서드도 효과를 본다. static 유틸 메서드는 특히 제네릭화하기 좋다. Collections에 구현된 모든 알고리즘 메서드는 제네릭으로 구현되어 있다. 두 집합의 합집합을 구하는 메서드를 제네릭을 이용하여 구현하면 아래와 같다.public static Set union(Set s1, Set s2) { Set result = new HashSet(s1); result.addAll(s2); return result; }컴파일러는 메서드에 전달된 인자의 자료형을 보고 무슨 타입인지 알아 낸다. ..
[Effective Java 규칙26] 가능하면 제네릭 자료형으로 만들 것Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 제네릭 자료형은 클라이언트가 형변환을 해야만 사용할 수 있는 자료형보다 안전하고 사용하기 쉽다. 코드가 이미 작성되어 있다면 기존 자료형을 제네릭 자료형으로 변환해야 한다. 그러면 기존 코드를 깨지 않고도 더 좋은 API를 제공할 수 있다.
[Effective Java 규칙25] 배열대신 리스트를 써라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 제네릭과 배열이 따르는 자료형 규칙은 서로 많이 다르다. 배열은 공변 자료형이자 실체화 가능 자료형이다. 제네릭은 불변 자료형이며, 실행시간에 형인자의 정보는 삭제된다. 따라서 배열은 컴파일 시간에 형 안전성을 보장하지 못하며, 제네릭은 컴파일 시점에 형 안전성을 확보하고 실행 시 형인자의 정보가 삭제된다. 그래서 제네릭을 사용하지 않고 작성된 레거시 코드와도 문제없이 연동이 되는 것이다. 배열은 런타임시 타입이 그대로이다.Object[] obj = new Object[0] 제네릭은 런타임시 제네릭 정보가 삭제된다List list = new ..
[Effective Java 규칙23] 새 코드에는 무인자 제네릭 자료형을 사용하지 마라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
[Effective Java 규칙22] 멤버 클래스는 가능하면 static 으로 선언하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 중첩 클래스에는 4가지 종류가 있다. 정적 멤버 클래스 ( static member class), 비 정적 멤버 클래스 ( nonstatic member class), 익명 클래스(anonymous class), 지역 클래스(inner class) 바깥 클래스 객체에 접근할 필요가 없는 멤버 클래스를 정의할 때는 항상 static을 사용해서 정적 멤버 클래스로 만들어야 한다. 만약 비 정적 멤버 클래스로 만든다면 객체는 내부적으로 바깥 클래스에 대한 참조를 유지하므로 시간과 공간 요구량이 늘어나고 GC 수집이 힘들어..
[Effective Java 규칙21] 전략을 표현하고 싶을 때는 함수 객체를 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 함수 포인터(function pointer), 대리자(delegate), 람다 표현식(lambda expression)은 파라미터 값으로 메서드를 전달하여 실행할 수 있다.자바는 함수 포인터를 지원하지 않지만 비슷한 효과를 낼수있다. String[] fruits = {"pineapple", "banana", "apple"}; Arrays.sort(fruits, (c1, c2) -> { return c1.length() - c2.length(); }); System.out.println(Arrays.toString(fr..
[Effective Java 규칙20] 태그 기반 클래스 대신 클래스 상속을 활용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 첫번째 태그 기반 클래스란 무엇일까?간단하다. 원을 표현할 수도 사각형을 표현할 수도 있는 모양의 넓이를 구하는 클래스가 있다고 생각해보자태그 기반 클래스는 아래의 코드와 같다. public class Figure { enum Shape { RECTANGLE, CIRCLE }; final Shape shape; double length; double width; double radius; Figure(double radius) { shape = Shape.CIRCLE; this.radius = radius; } Figu..
[Effective Java 규칙19] 인터페이스는 자료형을 정의할 때만 사용하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 인터페이스를 구현해 클래스를 만든다는 건, 해당 클래스의 객체로 어떤 일을 할 수 있는지 클라이언트에게 알리는 것이다.이진호환성이란 "클래스를 변경할 때, 그 클래스를 사용하는 클래스들에서 리컴파일 할 필요가 없어야된다" 라는 말이다. 자바에서 이진호환성이란 무엇인가?자바에서 이진호환성 예시 상수 인터페이스 패턴은 인터페이스를 잘못 사용한 패턴이다.public interface Constants { static final double AVOGADROS_NUMBER = 6.02214199e23; static final dou..