Java

· Java
자바 8 라이브러리 설계자들은 java.util.function 패키지로 여러가지 새로운 함수형 인터페이스를 제공한다. Predicate java.util.function.Predicate 인터페이스는 test라는 추상 메서드를 정의하며 test는 제네릭 형식 T의 객체를 인수로 받아 boolean을 반환한다. T 형식의 객체를 사용하는 boolean 표현식이 필요한 상황에서 Predicate 인터페이스를 사용할 수 있다. @FunctionalInterface public interface Predicate { boolean test(T t); } public List filter(List list, Predicate P) { List results = new ArrayList(); for (T t:li..
· Java
람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다라는 용어는 람다 미적분학 학계에서 개발한 시스템에서 유래했다. 람다 표현식에는 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 람다의 특징을 하나씩 살펴보자. 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. 전달 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 익명 클래스처럼 많은 코드를 구현할 필요가 없다...
· Java
동작 파라미터화란? 우리가 어떤 상황에서 일을 하든 소비자 요구사항은 항상 바뀐다. 변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없는 문제다. 회사에서 매일 점심 메뉴를 정해야 하는데 매일 변하는 과장님의 입맛을 맞춰서 정해야 한다고 예를 들어보자. 월요일 - "주말에 과식을 했으니 칼로리가 적은 음식을 먹어야겠어" 화요일 - "어제는 칼로리가 적은 음식을 먹었으니 오늘은 푸짐한 음식을 먹고 싶어" 수요일 - "어제 퇴근하고 술을 먹어서 해장으로 국물이 있는 음식을 먹고 싶어" 목요일 - "스트레스를 받으니 매운 음식을 먹고 싶군" 금요일 - "오늘은 금요일이라 기뻐서 칼로리가 높은 음식을 먹을래!" 이렇게 자주 변화하는 요구사항에 동작 파라미터화(Behavior Parameterization)..
· Java
Java 패키지를 Github에 간단히 릴리즈 해 배포 후 다른 프로젝트에서 쉽게 사용할 수 있다. 나의 경우는 프로젝트마다 Message Queue를 사용하는데 큐를 보내고, 받는 페이로드를 공통으로 사용하고 있다. 보안이 중요하지 않은 코드는 릴리즈 해 사용하는것도 편리한 방법이 될 것 같다. 인텔리제이, Gradle 기준으로 정리하겠다. 일단 배포할 모듈을 생성한다. 예제를 찾다보면 maven plugin을 적용하면 된다고 하는데 Gradle 7버전에는 maven plugin이 지원되지 않는듯하다. Gradle 7버전 이상을 사용한다면 모듈을 생성 후 build.gradle에 maven-pulish 플러그인을 적용해준다. plugins { id 'java' } // maven-publish 추가 시..
· Java
이번에는 Spring Boot 프로젝트에서 Slack으로 메세지를 발송할것이다. 매우매우매우 간단하다. 먼저 Slack에 앱을 추가해준다. 메세지를 받을 채널에 앱을 추가해준다. 메세지를 보낼 이름과 아이콘을 설정한다. 이제 Java에서 POST로 웹 후크 URL로 호출만 하면 된다. payload={"text": "보낼 메세지 내용"} @Component public class SlackUtil { private static final String webHookUrl = "https://hooks.slack.com/services/12421421421421412412414"; public static void messageSend(String message) { try { URL url = new UR..
· Java
컬렉션 프레임워크(Collection Framework)란? 다수의 데이터(데이터 그룹)를 저장하는 클래스들을 표준화한 설계 컬렉션 프레임워크의 핵심 인터페이스 컬렉션을 크게 List, Set Map 3가지 타입이 존재한다. List와 Set은 공통된 부분이 많아 Collection 인터페이스로 정의 할 수 있지만, Map은 전혀 다른 형태이므로 상속계층에 포함되지 않는다. Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션 프레임워크가 만들어지기 이전부터 존재하던것이기 때문에 컬렉션 프레임워크의 명명법을 따르지 않는다.(사용하지 않는것이 좋다) Collection 인터페이스 List 인터페이스 순서가 있는 데이터의 집합, 데이터의 중복을 허용 구현 클래스 : Ar..
· Java
String Class 기존에 다른 언어에서는 문자열을 char형의 배열로 다루었으나 자바에서는 문자열을 위한 클래스를 제공한다. String클래스는 문자열을 저장하고 이를 다루는데 필요한 메서드를 제공한다. 변경 불가능한(immutable) 클래스 String클래스에는 문자열을 저장하기 위해서 문자형 배열 변수(char[]) value를 인스턴스 변수로 정의해놓고 있다. 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수(value)에 문자형 배열(char[])로 저장되는 것이다. public final class String implements ... { private char[] value; ... } 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, ..
· Java
Object Class Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object 클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. equals(Object obj) 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려주는 역활을 한다. 서로 다른 두 객체는 equals메서드로 비교하면 항상 false를 결과로 얻게 된다. equals 메서드는 주소값으로 비교를 하기 때문에, 변수의 value가 같을지라도 변수의 주소값이 다르다면 false를 반환한다. Class Value { int value; public Value(int value) { this.value = value; } } Val..
· Java
원인 예외(cause exception) 한 예외가 다른 예외를 발생시킬 수 있다. 예를 들어 예외A가 예외B를 발생시켰다면, A를 B의 '원인 예외(cause exception)'라고 한다. try { startInstall(); copyFiles(); } catch (SpaceException e) { InstallException ie = new InstallException("설치중 예외발생"); // 예외 생성 ie.initCause(e); // InstallException의 원인 예외를 SpaceException으로 지정 throw ie; // InstallException을 발생시킨다. } catch (MemoryException me) { ... } Throwable initCause(T..
· Java
예외 되던지기 한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수있다. 이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능하다. 예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 다시 발생한 예외는 이 메서드를 호출한 메서드에게 전달되고 호출한 메서드의 try-catch문에서 예외를 또 다시 처리한다. static void method1() throws Exception { try {..
beekei
'Java' 카테고리의 글 목록 (4 Page)