java17 & SpringBoot3.0 2021년 9월 java 17이 새로 나왔다 (LTS버전 - Long-term support) java 11과 비교해서 70가지 이상의 JEP가 더 추가되었다고 한다. *JEP : JDK 개선제안, JDK Enhancement Proposals SrpigngBoot 3.0부터는 JDK 17 이상을 지원한다. 그리고 이제 spring initializr에서 boot 3.0부터 지원한다!!! 그래서 java 17과 springboot 3.0에 대해서 살펴보려고 한다. java17의 주요 개선사항 Collection Factory Method강화 Var keyward 등장 String에 신규 메소드 추가 텍스트 블록 기능 추가 Switch표현식 기능향상 Record D..
Variable used in lambda expression should be final or effectively final 아래와 같이 java 코드를 작성하면 intellij에서 오류를 뱉으며 컴파일되지 않는다. int number = 1234; number = 2; Runnable r = () -> System.out.println(number); 결론부터 말하면, 람다에서는 파라메터가 아닌 외부 변수(free variable, 자유변수)를 사용 할 수 있다. 단, 지역변수는 final이거나 final처럼 사용되어야한다.(effectively final) 그 이유를 알아보자. 변수 변수에는 클래스변수, 인스턴스 변수, 지역변수가 있다. public class test { int iv; // 인스..
lambda 먼저 lambda에 대한 설명은 여기를 참고하자. https://wouldyou.tistory.com/63 [java] Lambda 람다란? 람다함수 람다함수는 메소드를 하나의 식(Expression)으로 표현하는 것으로 익명함수(Anonymous function)를 생성 한다. 함수형 프로그래밍을 하고자 하며 나왔다고 한다. 자바에서는 메소드 혼자 선언 wouldyou.tistory.com callback만들기 functional interface를 하나 생성해준다. interface Testable { void run(); } interface를 아래와 같이 구현하면 callback처럼 사용할 수 있다. public class Example { // 인터페이스 Testable로 된 클래스..
익명클래스 java에서는 아래와 같은 클래스가 있을 때, 익명 클래스로 만들 수 있다. // 부모 클래스 class Animal { public String bark() { return "동물이 웁니다"; } } // 자식 클래스 class Dog extends Animal { @Override public String bark() { return "개가 짖습니다"; } } public class Main { public static void main(String[] args) { Animal a = new Dog(); a.bark(); } } class Animal { public String bark() { return "동물이 웁니다"; } } public class Main { // 익명 클래스 ..
java에서 코드 실행시간을 측정하려면 아래처럼 하면 된다. long start = System.currentTimeMillis(); //로직 long end = System.currentTimeMillis(); System.out.println("수행시간: " + (end - start) + " ms");
Collection Collection을 공부하다가, 내게 익숙치 않지만 유용해 보이는 메소드들이 있어서 정리해보았다. Collection을 처음 만들 때 List, Set, Map으로 분리했다가, List와 Set만 공통되는 점이 있어서 Collection이라는 인터페이스를 상속받도록 했다고 한다. List 리스트는 위의 사진과 같은구조로 되어있다. 메소드 목록이다. 아래 외에도 많은 메소드가 있으니 API를 살펴보자. boolean addAll(int index, Collection c) 저장된 위치 index에 컬렉션의 모든 객체를 추가한다. ListIterator listIterator() ListIterator listIterator(int index) List의 객체에 접근할 수 있는 List..
기존에 구현되어있던 FTP file upload 코드를 사용하다가, 파일명이 한글인 파일은 upload되지 않는 문제가 발생했다. 해결 방법은 FTP를 connect하기 이전에 encoding설정을 해주는 것이다. 반드시 Connect 이전에 euc-kr로 인코딩 해줘야 한다. ftp.setControlEncoding("euc-kr")