반응형

java

    Java8 인터페이스 default Method (디폴트 메소드)

    인터페이스의 디폴트 메서드 Java8에서 추가된 람다식을 제외하고도 편리한 기능이 추가되었다. 그 중 하나가 인터페이스의 default 메소드이다. Java8에서는 interface에 default 키워드를 통해 메서드를 구현할 수 있다. 또, 이를 구현하는 클래스는interface의 메서드를 @Override 할 수 있다. Default 매서드 구현 방법은 다음과 같다. 123456789101112131415161718192021222324252627282930// getName이라는 default 메소드 선언public interface WedulInterface { default String getName() { return "wedul"; }} // getName이 없는 DTO 클래스 생성publ..

    Java8 생성자 레퍼런스

    생성자 레퍼런스 생성자 레퍼런스는 메서드의 이름이 new라는 점을 제외하면 메서드 레퍼런스(Class::Method)와 유사하다. 12345678910111213141516171819202122232425262728// 생성자 레퍼런스에서 사용될 클래스 WedulObjectpublic class WedulObject { private String name; private WedulObject(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // 생성자 레퍼런스public static void main(String ar..

    Java8 메서드 레퍼런스

    메서드 레퍼런스 - 메서드 레퍼런스는 이름과 동일하게 메서드를 대상으로 한 람다식의 간략형이며, 메서드 참조를 나타내는 예약어로서 (::)를 사용한다. 다시 말해서 메서드 레퍼런스는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불 필요한 매개 변수를 제거하는 것이 목적이다. - 메소드 참조의 예와 그에 대한 람다식은 다음과 같다. 기본 구조 String::valueOf x -> String.valueOf(x) Object::toString x -> x.toString() x::toString () -> x.toString() 왼쪽은 메서드 레퍼런스이고 오른쪽은 람다식이다. 메서드 레퍼런스의 3가지 형태 :: 연산자는 객체 또는 클래스와 메서드 이름을 구분하며, 세 ..

    Java8 기초 설명

    Java8과 Java7은 많은 부분이 바뀌어서 이제 Java8을 모르는 사람은 다른사람들과 협업하기 어려워 질 수도 있다. 작년에 공부하였던 부분을 다시 복습 할겸 포스팅을 진행한다. Java8이 도입되면서 많이 변경된 부분이 함수형 프로그램이 가능하도록 되었다는 것이다. 그것의 중심에는 람다식 표현식이 있다. 람다 표현식(lambda expression) - 람다식 이란? 단순히 정의하면, 프로그래밍에서 식별값 없이 실행 할 수 있는 함수 표현 방법, 함수를 변수에 할당, 파라미터로 전달하는게 가능 이미 많은 언어에서 지원하고 있다. Ruby, C#, Python,,,,, 그러나 자바는 함수형 프로그램 언어가 아니 여서 기존에 사용할 수 없었다. - 함수형 인터페이스(functional interfac..

    규칙 60 - 표준 예외를 사용해라

    예외를 사용할 때 기존에 정의되어있는 표준예외를 사용하는 것이 좋다. 그 이유는 다음과 같다. - 배우기 쉽고 사용하기 편리한 API를 만들수 있으며 다른 프로그래머들도 친숙한 널리 퍼진 관습을 따르기 때문이다. - 잘모르는 예외가 없어 API 가독성을 높일수있다. - 예외클래스를 별도로 만들어서 클래스를 늘리지 않으면 프로그램의 메모리 요구량이 줄어들고 클래스를 로딩하는 시간도 줄어든다. 대표적인 표준 예외 예외용례lllegalArgumentExceptionnull이 아닌 인자값이 잘못되었을때llegalStateException객체 상태가 메서드 호출을 처리하기에 적절치 않을때NullPointerExceptionnull 값을 받으면 안 되는 인자에 null이 전달되었을 때IndexOutOfBoundsE..

    규칙 58 복구가능 상태에는 점검지정 예외를 사용하고, 프로그래밍 오류에는 실행시점 예외를 이용하라.

    자바에는 몇 가지에 throwable을 제공한다. 점검지정 예외 (checked error) 컴파일 시점에 예외가 발생하는 부분으로 컴파일 시에 에러를 처리하는 코드를 삽입하지 않으면 컴파일이 되지 않는다. 12345678910public void ioOperation(boolean isResourceAvailable) { try { if (!isResourceAvailable) { throw new IOException(); } } catch(IOException e) { // Handle caught exceptions. }} Colored by Color Scriptercs unchecked error 컴파일 시점에 체크되지 않는 에러 실생시점 예외(runtime exception)와 오류(erro..

    규칙 57 예외는 예외적 상황에만 사용하라.

    예외는 잘 사용하면 프로그램의 가독성, 안전성, 유지보수성을 모두 향상시킬 수 있다. 그러나 제대로 사용하지 않으면 반대 효과를 낼 수있다. 다음의 예를 보자. 12345678910111213141516171819202122232425262728public class Main { public static void main(String args[]) { int i = 0; Test[] data = new Test[] {new Test("t1"), new Test("t2")}; try { while(true) { System.out.println(data[i++].getData()); } } catch (ArrayIndexOutOfBoundsException ex) { } } static class Test..

    규칙 56 - 일반적으로 통용되는 작명 관습을 따르라

    자바의 작명관습은 두 가지 범주로 나눌 수 있다. 철자. -> 패키지, 클래스, 인터페이스, 메서드, 필드 그리고 자료형 변수에 관한 것 -> 아주 그럴듯한 이유가 없이 이 규칙을 어겨서는 안 된다. 1). 패키지 -> 마침표를 구분점으로 사용하는 계층적 이름 이어야 한다. -> 각각의 컴포넌트는 알파벳 소문자로 구성하고, 숫자는 거의 사용하면 안된다. -> 패키지 시작은 회사 조직의 도메인으로 시작한다. com.wedul -> 패키지명 컴포넌트는 짧아야 하며, 8자리 이하여야 한다. -> 약어를 사용하여 의미를 충분히 전달할 수 있어야한다. 2). 클래스, 인터페이스, Enum -> 하나이상의 단어로 구성된다. -> 각 첫 글자는 대문자로 시작해야 하며 널리 사용 되는 약어를 제외하고는 약어를 사용해서..

    규칙 54 - 네이티브 메서드는 신중하게 사용하라.

    자바의 네이티브 인터페이스 (JNI)는 C, C++ 등의 네이티브 프로그래밍 언어로 작성된 네이티브 메서드를 호출할 때 사용한다. 네이티브 메서드가 수행하는 계산은 네이티브 언어로 실행되며, 자바언어로 전달된다. 네이티브 기능에 경우 기존에 자바가 많은 발전이 있기전에 기존에 만들어져있는 기능등을 사용하기 위해서 자주 사용되었다. 하지만 자바가 발전하면서 대부분의 기능들이 자바에서 문제없이 사용이 가능하게 되었다. 네이티브 메서드를 사용하는 것 보다, 자바로 새로 구현된 기능을 사용하는 것이 성능이 더 빠르다. 그 이유는 자바에서 사용하는 JVM 속도가 훨씬 개선되어, 1.3 이후부터는 네이티브 메서드를 사용할 필요가 없다. 또한 네이티브 메서드에서 가장 심각한 문제는 안전하지 않기 때문에, 메모리 훼손..

    규칙 53 - 리플렉션 대신 인터페이스를 이용하라

    자바에서 제공하는 리필렉션 기능을 이용하면 메모리에 로드된 클래스 정보를 바탕으로 필드 정보를 가져오거나, 메서드를 실행시키고 객체를 만드는 등 다양하게 조작을 할 수 있다. 하지만 여기서 이런 리플렉션 기능에는 단점이 존재한다. 1. 컴파일 시점에 자료형을 검사하면서 얻을 수 있는 예외 처리에 대한 이점을 포기해야한다. 또한 접근할 수 없는 메서드를 호출하게 되는 경우에는 오류를 발생시킬 수 있다. 2. 리플렉션 기능을 이용하면 코드가 가독성이 떨어진다. 3. 리플렉션을 통한 메서드 호출은 일반적인 방식 보다 속도가 2 ~ 50배 정도 늦어진다. 사실 리플렉션은 컴포넌트 기반 응용 프로그램 저작 도구를 위해 개발 되었기 때문에, 일반적인 프로그램은 프로그램 실행 중에 리플렉션을 통해 객체를 이용하려 하..

반응형