일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Django REST Android
- Rxjava2
- UWP
- Django REST framework
- FLUTTER
- 알고리즘
- RxAndroid
- C
- flutter firestore
- kodility
- Django REST
- 코틀린
- Java
- dart
- 안드로이드
- android architecture component
- RxJava
- C++
- 안드로이드 구글맵
- Android P
- 프로그래머스
- android push
- Python
- C/C++
- Android
- NDK
- Flutter TextField
- livedata
- Kotlin
- mfc
- Today
- Total
목록Java,Android (120)
개발하는 두더지
[Effective Java 규칙9] equals를 재정의할 때는 반드시 hashCode도 재정의하라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 많은 버그가 hashCode 메서드를 재정의하지 않아서 발생한다. 그로므로 equals 메서드를 재정의할 때 hashCode 메서드도 반드시 재정의 해야한다.Object 클래스 명세에 정의된 내용을 보면- 응용프로그램 실행 중에 같은 hashCode를 여러번 호출하면 항상 같은 값을 반환해야한다. 다만 프로그램이 종료되었다가 다시 실행될 때 같은 값이 나올 필요는 없다.- equals 메서드가 같다고 판정한 두 객체의 hashCode 값은 반드시 같아야 한다.- equals 메서드가 다르다고 판정한 두 ..
[Effective Java 규칙8] equals를 재정의할 때는 일반 규약을 따르라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. Object는 객체 생성이 가능한 클래스이지만 기본적으로 상속하여 사용하도록 설계된 클래스이다Object에 정의된 비 final 메서드 equals, hashCode, toString, clone, finalize는 재정의하도록 설계된 메서드이기때문에재정의하여 사용해야한다 위 메서드를 사용하는 클래스는 일반 규약을 따라야하는데 HashMap, HashSet처럼 해당 규약에 의존하는 클래스와 함께 사용하면 문제가 생긴다이번 챕터에서는 위 메서드들을 언제 어떻게 재정의해야하는지를 다룬다. 1. == 연산자를 사용하여 equ..
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 자바를 배울 수 있는 책은 무수히 많지만 이 책은 조슈아 블로크(Joshua Bloch)라는 썬 마이크로시스템즈, 구글에서 오랜 시간 자바를 확장하고 구현하고 사용한 프로그래머가 우아한 코드 구조를 설계하는 방법을 알려주는 책입니다.2판의 경우 78개의 규칙들을 서술하고 있으며 하나하나 규칙들을 포스팅할려고 합니다. [Effective Java 규칙1] 생성자 대신 정적 팩터리 메서드? [Effective Java 규칙2] 생성자 인자가 많을 때는 Builder 패턴을 이용[Effective Java 규칙3] private 생성자나 enum 자료형은 싱글턴 패턴으로 설계 [Effective Java 규..
[Effective Java 규칙7] 종료자 사용을 피해라Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 책에 따르면 종료자는 예측 불가능하며, 대체로 위험하고, 일반적으로 불필요하다자바에서의 종료자는 C++ 소멸자와는 다르다C++에서 소멸자는 메모리 이외의 자원을 반환하는데도 사용되는데 자바에서는 보통 try finally 블록이 그런 용도로 쓴다자바에서 어떤 객체에 대한 모든 참조가 사라지고 나서 종료자가 실행되기까지는 긴 시간이 걸릴 수 있으므로 긴급한 작업을 종료자 안에서 처리하면 안된다예를들어, 종료자 안에서 파일을 닫는 행위는 치명적이다. 파일 디스크립터는 유한한 자원이기 때문이다JVM은 종료자를 천천히 실행하므로 열린 상태의 파일이 많이..
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. C/C++ 처럼 손수 메모리를 관리해야하는 언어와 달리 자바는 GC에 의해 자동으로 적절한 시기에 안쓰는 메모리를 해제한다하지만 자바도 메모리릭이 분명 발생하며 그 결과로 GC가 할일이 많아져 성능이 저하되고 메모리 요구량이 증가할 것이다극단적으로 디스크 페이징이 발생하고 OOM(Out Of Memory)가 출력되며 프로그램이 중단될 것이다public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_SIZE = 4; public Stack() { elements = new Obje..
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 기능적으로 동일한 객체는 필요할 때마다 만드는 것보다 재사용하는 것이 낫다.객체를 재사용하는 프로그램은 더 빠르고 우아하다 String s = new String("hello");객체를 생성할 때마다 새로운 객체가 만들어진다. s = "hello";이렇게하면 실행할 때마다 객체를 새로만드는 것이 아닌 동일한 객체를 사용한다. ( 아마 GC에 의해 사라지기 전까지 )같은 가상 머신에서 실행되는 모든 코드가 해당 객체를 재사용한다. 예를들어 아래와 같은 클래스가 있다1946년에서 1965사이에 태어났는지 확인하는 메서드이다public class Person { private final Date birthD..
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 싱글턴은 유일한 객체이므로 클래스를 싱글턴으로 만들 경우 테스트하기가 어렵다. 왜냐하면 가짜 구현으로 대체할 수 없기 때문에싱글턴을 구현하는 2가지 방법 1. private 생성자, public static 멤버변수 객체 생성2. private 생성자, public static 멤버변수 객체 생성, public 정적 팩터리 메서드 이용 싱글턴 클래스를 직렬화 가능 클래스로 만들려면 클래스 선언에 implements Serializable을 추가하면 되는데위 2가지 방법의 경우 추가하는 것만으로는 부족하다. 싱글턴 특성을 유지하려면 모든 필드를 transient (순간적인/일시적인?) 로 선언하고read..
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다. 생성자에 인자가 많을 때 적용할 대안에는 1. 점층적 생성자 패턴점층적으로 생성자를 쌓아가는 방식class Car { private int a; private int b; private int c; private int d; public Car(int a, int b) { this(a, b, 0); } public Car(int a, int b, int c) { this(a, b, c, 0); } public Car(int a, int b, int c, int d) { this.a = a; this.b = b; this.c = c; this.d = d; } } 2. 자바빈 패턴빈 생성자를 만들고 Set..