Development/Java
-
[Java] 람다 표현식 (메서드 레퍼런스)Development/Java 2019. 12. 22. 00:42
메서드 레퍼런스를 이용하면 클래스에 정의된 메서드를 이용해서 람다처럼 함수를 전달할 수 있습니다. public class Foo { private int value; public Foo(int value) { this.value = value; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } @Override public String toString() { return "Foo{" + "value=" + value + '}'; } } import java.util.function.Consumer; public class FirstMain { public static void ma..
-
[Java] Image Resize 방법Development/Java 2019. 12. 17. 00:18
Java에서 기본적으로 제공하는 패키지들을 이용하면 손쉽게 이미지 크기를 변경할 수 있습니다. 예시로 작성한 코드는 아래와 같습니다. package com.example.multipart.lib; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; public class ImageUtils { public static BufferedImage resize(InputStream inputStream, int width, int height) throws IOException { BufferedImage in..
-
[Java] 제네릭과 가변인수 (Effective Java 3rd_item32)Development/Java 2019. 8. 18. 13:39
가변인수(varargs) 메서드와 제네릭은 Java 5 때 추가되었습니다. 가변인수 메서드는 이름 그대로 메서드의 인수를 클라이언트가 조절하여 호출할 수 있는 메서드 입니다. 간단한 예시로 아래와 같은 코드가 있습니다. public static void printVarargsString(String... strings) { System.out.println(strings.getClass().getSimpleName()); System.out.println(); for (String string : strings) { System.out.println(string); } } public static void main(String[] args) { printVarargsString("a", "b", "c")..
-
[Java] 한정적 와일드 카드 (Effective Java 3rd_Item31)Development/Java 2019. 8. 11. 23:51
한정적 와일드카드를 이용하면 매개변수화 타입을 이용하는 방법보다 더 유연한 타입을 만들 수 있습니다. 매개변수화 타입은 불공변 타입이므로 명시된 한정자가 없다면 타입간에 불일치가 발생하여 에러가 생길 수 있습니다. 아래와 같이 스택 클래스를 예로 보겠습니다. public class StackGeneric { private E[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; @SuppressWarnings("unchecked") public StackGeneric() { elements = (E[]) new Object[DEFAULT_INITIAL_CAPACITY]; } public void p..