Reference/Effective-Java

    [Effective-Java] Chapter9 #66. 네이티브 메서드는 신중히 사용하라

    💡 네이티브 메서드를 사용하려거든 한번 더 생각해보라. 사용하더라도 최소한만 사용하고 철저히 테스트하라. JAVA Native Method (JNI) 보통 서로 다른 장, 단점을 갖고 있는 JAVA와 C++, 이 두 언어를 결합할 수만 있으면 큰 시너지를 발휘할 수 있다고 생각한다. 뭐, 어느 정도의 범위에서는 그렇긴 하지만...그러나 왠만하면, 정말 roughexistence.tistory.com JNI를 어떻게 사용하는지 궁금해서 찾아봤는데...어...잘 봤습니다. 📌 JNI(Java Native Interface) Java 프로그램이 Native method를 호출하는 기술 C나 C++같은 native programming language로 작성한 method Native method의 쓰임 레지스..

    [Effective-Java] Chapter9 #65. 리플렉션보다는 인터페이스를 사용하라

    📌 리플렉션(Reflection) 구체적인 클래스 타입을 알지 못하더라도 해당 클래스의 생성자, 메서드, 필드에 해당하는 Constructor, Method, Field 인스턴스를 가져올 수 있고, 해당 인스터스들로 그 클래스의 member name, field type, Method signature 등을 가져올 수 있다. 동적으로 클래스를 사용해야할 때 사용한다. Compile time에는 어떠한 클래스를 사용해야 할 지 모르겠으므로, Runtime에 가져와 실행하는 경우 각각에 연결된 실제 생성자, 메서드, 필드를 조작할 수 있다. Reflection으로 가져올 수 있는 정보 : Class, Constructor, Method, Field ✒️ 구체적인 클래스 타입을 알지 못한다? Runner의 타..

    [Effective-Java] Chapter9 #64. 객체는 인터페이스를 사용해 참조하라

    [Effective-Java] Chapter8 #51. 메서드 시그니처를 신중히 설계하라 이번 챕터는 개별 Item으로 두기 애매한 API 설계 요령들에 대한 내용들이다. 그냥 지금까지 했던 내용들 복습하는 느낌으로 읽어도 무방 메서드 이름을 신중히 짓자 항상 표준 명명 규칙(Item 68)을 jaeseo0519.tistory.com 💡 적합한 인터페이스만 있다면 매개변수, 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라 // 좋은 예 Set sonSet = new LinkedHashSet(); // 나쁜 예 LinkedHashSet sonSet = new LinkedHashSet(); 객체의 실제 클래스를 사용할 상황은 '오직' 생성자로 생성할 때 뿐이다. 인터페이스를 타입으로 사용하는 습관을..

    [Effective-Java] Chapter9 #63. 문자열 연결은 느리니 주의하라

    이건 자바로 코테 쳐봤으면 누구나 알 법한 이야기. 📌 String 문자열 연결 방식 public String statement() { String result = ""; for (int i = 0; i < numItems(); i++) result += lineForItem(i); return result; } 한 줄짜치 출력값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때는 괜찮은 방법이다. 하지만 본격적으로 사용하게 되면, 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. String은 불변 클래스이므로 두 문자열 연결을 위해 양쪽 내용을 모두 복사해야 한다 📌 StringBuilder [Effective-Java] Chapter4 #17. 변경 가능성을 최소화하라 : 불..