JAVA: 282개의 글
개발 하다 보면 가끔 inner class를 사용하는 경우가 있다.outer class에서만 사용하는 경우outer class에만 멤버 변수로 선언되어 있고, 외부에서 생성할 수 있어야 하는 경우책임을 분리하고 싶지만, 외부로 노출하지(사용하지) 못해야 하는 경우 나는 대략 위와 같은 기준으로 inner class를 만들어 사용한다. inner class는 non static inner class와 static inner class로 나뉜다. 그 외 메소드에서 선언되는 local class(지역 클래스)와 anonymous inner class(익명 클래스)도 있다. 이 글은 non static inner class와 static inner class만 설명한다.non static inner classc..
개발 중에 list.addAll(T); 와 같은 코드 작성할 일이 있었다. 하지만 계속 java.lang.UnsupportedOperationException 에러가 나는 게 아닌가? 결론부터 말하자면 생각 없이 Collections.emptyList();로 초기화했기 때문이다.java.lang.UnsupportedOperationExceptionjava 문서에는 이 Exception을 이렇게 설명한다.요청한 오퍼레이션이 지원되지 않는 경우 Exception 발생UnsupportedOperationException는 Java Collection Framework에 Exception 클래스다.그럼 Java Collection Framework를 사용하는 경우 비정상 요청을 한 경우 throw 되는 것인가?..
책 검색 서비스를 만들기 위해서 책 검색 API를 찾던 중 네이버 검색 API를 발견했다.검색 API는 여러 종류에 검색 API를 제공하고 그 중 책 검색 API를 예제로 설명할 것이다. 사실 URL만 다르지 검색 API 모두 xml, json 구조는 모두 동일하고 아래와 같다. 예제 소스검색 API 문서 XML : 기본 검색1234567891011121314151617181920212223 Naver Open API - book ::'주식' http://search.naver.com Naver Search Result Mon, 26 Sep 2016 10:40:35 +0900 20177110 불곰의 주식투자 불패공식 (60개 매도종목 평균 수익률 62%) http://openapi.naver.com/l?..
예제 : https://github.com/woniper/JavaExample 두 리스트를 비교해 데이터를 추출해야되는 요구사항이 있다. 보통 Collection을 사용한 로직은 반복문을 사용해야하는데, 2개의 리스트가 있는 경우는 2중 for문을 사용하는게 대부분이다. java8 stream에서는 어떻게 2중 for문을 사용할지, 어떻게 데이터를 필터링하는지 알아보자. 대상 리스트12private List targetList = Arrays.asList("a", "b", "c", "d", "e");private List filterList = Arrays.asList("a", "b");cs 불일치 데이터 필터링123456789@Testpublic void testTwoListNonMatch() thro..
TypeToken (ModelMapper)1234567891011121314151617181920212223242526272829package org.modelmapper; import java.lang.reflect.GenericArrayType;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.lang.reflect.TypeVariable;import java.lang.reflect.WildcardType; import org.modelmapper.internal.util.Assert;import org.modelmapper.internal.util.Types; public class TypeToke..
토비님 방송을 보고 SuperTypeToken이란 것을 알게됐다. 이게 뭔지도 모르고 써서 그렇지 그동안 종종 써오던 코드다.SuperTypeToken 이란게 무엇인지는 간단하게 설명하고 그동안 용어도 모른체 사용해온 코드를 설명하기 위해서 글을 쓴다.일단 자세히 알고 싶은 분은 여기를 보기 바란다.토비의 봄 TV 2회 - 슈퍼 타입 토큰토비의 봄 TV 2.5회 - 수퍼 타입 토큰(2), 스프링 ResolvableTypebesidesoft 에서 방송을 본 뒤 정리한 블로그 글전체 예제 소스 SuperTypeToken 자바에서 ArrayList로 제네릭을 사용할 때는 아래와 같이 사용한다.1List list = new ArrayList();cs 그리고 클래스에 메타정보를 가지고 있는 java.lang.Cl..
12345private Map map = new HashMap(); public boolean isPut(String text) { return map.put("test", text) != null;}Colored by Color Scriptercs isPut 메소드와 같은(map에 데이터를 put하고 데이터가 잘 저장되었는지 확인하는 메소드) 메소드를 만든다고 가정해보자. 정상적으로 동작할까? HashMap에 put 메소드는 새롭게 저장된 데이터 즉, 새로운 key로 저장된 데이터라고 판단되면 null을 반환한다. 그러니까 위 코드는 한번 호출 됐다면 false를 return할 것이고, 두번 이상 호출 됐다면 true를 return할 것이다. 의도와 다른 메소드이다. 그렇다면 List는 어떨까?1234..
https://github.com/Woniper/JavaExample/tree/master/AWS-S3-JAVA 1. S3 설정- S3 사용방법- AWS SDK 다운로드 : http://aws.amazon.com/ko/sdkforjava/- 라이브러리 추가(AWS SDK는 용량 초과로 위 url에서 다운받아야함.)2. S3 Access Key 생성오른쪽 상단에 Security Credentials 선택 Access Keys 선택 > Create New Access KeyShow Access Key 선택하면 Access Key ID와 Secret Access Key가 생성된걸 볼 수 있다. 3. S3Util 구현S3 Endpoint URL : http://docs.aws.amazon.com/general/..
https://github.com/Woniper/JavaExample/tree/master/AES2561. commons-codec-1.9.jar 추가 2. AES256 구현?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package com.woniper.aes; import java.io.UnsupportedEncodingException;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.Ke..
옵서버 패턴 Observer 패턴에서는 관찰 대상의 상태가 변화하면 관찰자에게 알려준다.Observer 패턴은 상태 변화에 따른 처리를 기술할 때 효과적이다.옵서버 패턴은 데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다.예를 들어 새로운 파일이 추가되거나 기존 파일이 삭제되었을 때 탐색기는 이를 즉시 표시할 필요가 있다. 탐색기를 복수 개 실행하는 상황이나 하나의 탐색기에서 파일 시스템을 변경했을 때는 다른 탐색기에게 즉각적으로 이 변경을 통보해야 한다. 다른 예로는 차량의 연로가 소진될 때까지의 주행 가능 거리를 출력하는 클래스, 연료량이 부족하면 경고 메시지를 보내는 클래스, 연료량이 부족하면 자동으로 근처 주유소를 표시하는 클래스 등에 ..