본문 바로가기

728x90
반응형

JAVA

(49)
[JAVA8] 람다 표현식을 조합할 수 있는 유용한 메서드 알아보기 1.Comparator - Comparator.comparing : comparing은 Comparator의 정적 메서드로 Function을 인자로 받는다. Comparator c = Comparator.comparing(Test::getTest); - reversed : 역정렬 Comparator.comparing(Test::getTest).reversed(); - thenComparing : 첫 비교결과가 동일할 경우 다음 비교 Function을 설정할 수 있다. Comparator.comparing(Test::getTest).reversed().thenComparing(Test::getScore()); 2. Predicate - negate : 기존 Predicate을 반전 시킬때 Predicate..
[JAVA8] Lambda(람다)에서 지역변수 사용하기 람다 표현식에서는 익명 함수가 하는 것처럼 자유 변수(파라미터로 넘겨진 변수가 아닌 외부에서 정의된 변수)를 사용할 수 있다. 이와 같은 동작을 람다 캡처링이라고 부른다. 람다에서는 인스턴스 변수와 정적 변수는 제약없이 캡처하여 사용할 수 있다. 즉 자신의 바디 영역에서 언제든지 사용할 수 있다는 의미이다. 하지만 지역 변수는 제약 사항이 있다. final로 선언되어 있거나 실질적으로 final로 선언된 변수와 똑같이 사용되어야 한다. 즉 한번 할당한 지역 변수를 두번 할당하지 않는 지역변수만 람다에서 사용가능하다는 뜻이다. 아래 내용은 가능함. int message = "hi"; Runnable r = () -> System.out.println(message); 아래 내용은 가능하지 않음. int m..
[JAVA8] 함수형 인터페이스 정리 함수형 인터페이스는 오직 하나의 추상 메서드를 지정한다. 함수형 인터페이스의 추상 메서드는 람다 표현식의 시그너처를 묘사한다. 함수형 인터페이스의 추상 메서드 시그너처를 함수 디스크립터라고 한다. 자바8 라이브러리에서 제공하고 있는 function패키지에 함수형 인터페이스를 알아보자. function 패키지에서 지원하고 있는 함수형 인터페이스는 별도에 인터페이스 정의 없이 바로 개발자가 사용할 수 있다. 1. Predicate Predicate 인터페이스는 test라는 추상 메서드를 정의하고 test는 제네릭 형식 T의 객체를 인수로 받아 boolean을 반환한다. @FunctionInterface public interface Predicate { boolean test(T t); } *기본형 특화형 ..
[JAVA] OkHttp로 REST API 호출하기 Android에서 많이 사용하고 있는 OkHttp에 대해 알아보자. OkHttp는 Square에서 제공하는 오픈소스 프로젝트이며 동기, 비동기 방식을 각각 제공해줌으로서 개발자가 선택하여 사용할 수 있다. [GET 동기]public void get(String requestURL) { try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .addHeader("x-api-key", RestTestCommon.API_KEY) .url(requestURL) .build(); //GET Request //동기 처리시 execute함수 사용 Response response = client.newCall(requ..
[JAVA] HttpClient로 REST API 호출하기 이번 페이지에서는 Apache에서 제공하고 있는 HttpClient 라이브러리를 이용해 REST API를 호출하는 방법을 알아보자.  [GET]public void get(String requestURL) { try { HttpClient client = HttpClientBuilder.create().build(); // HttpClient 생성 HttpGet getRequest = new HttpGet(requestURL); //GET 메소드 URL 생성 getRequest.addHeader("x-api-key", RestTestCommon.API_KEY); //KEY 입력 HttpResponse response = client.execute(getRequest); ..
[JAVA] HttpURLConnection로 REST API 호출하기 이번 페이지에서는 HttpURLConnection을 이용해 REST API를 호출하는 방법을 알아보자. [GET] public void get(String strUrl) { try { URL url = new URL(strUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setConnectTimeout(5000); //서버에 연결되는 Timeout 시간 설정 con.setReadTimeout(5000); // InputStream 읽어 오는 Timeout 시간 설정 con.addRequestProperty..
[JAVA] REST API Client Library 알아보기 in Java Project 시스템 서비스 규모가 커지고 마이크로서비스 개념이 확산되어가면서 많은 프로젝트에서 서비스간에 통신 방식으로 REST API를 선호 하고 있다. 이 페이지에서는 REST API 사용자 입장(Client)에서 활용할 수 있는 JAVA Library를 알아보고자 한다. REST API Client에 JAVA Library로는 HttpURLConnection, HttpClient, OkHttp, Retrofit, RestTemplate를 대표적으로 들 수 있다. 이것 이외에도 수많은 Library가 존재하지만 많은 개발자가 선택하고 사용하고 있는 4가지 Library에 대해 간략하게 알아보자. 1. HttpURLConnection - 기본 JDK에 포함되어 있음. (jdk1.2부터 내장되어 있으며 java.ne..
[JAVA 8] 메서드 레퍼런스 알아보기! 메서드 레퍼런스는 특정 메서드만을 호출하는 람다의 축약 표현이라고 생각할 수 있다. 람다가 특정 메서드를 직접 호출하게 된다면 메서드를 어떻게 호출해야 하는지 설명을 참조 하기 보다 메서드 명을 직접 참조 하도록 하는 것이다. 메서드 레퍼런스를 이용한다면 기존 메서드 구현으로 람다 표현식을 만들 수 있다. 이때 명시적으로 메서드명을 참조 하게 됨으로서 가독성을 높일 수 있는 장점이 있다. 메서드 레퍼런스는 메서드명 앞에 구분자 (::)를 붙이는 방식으로 사용된다. Car :: getPrice (== (Car c) -> getPrice())는 Car 클래스의 getPrice의 메서드 레퍼런스를 뜻한다. [예제] (Car c) -> c.getPrice() =========> Car :: getPrice ()..

728x90
반응형