본문 바로가기

Back-end/Java4

Java의 Functional Interface Functional Interface란? Java8부터 함수형 패러다임을 적용하기 위해 적용된 기능으로 Lamda Expression 또는 method reference를 이용하여 구현됩니다. Lamda Expression이란? 람다 표현식은 익명 함수를 보다 간결하고 가독성있게 표현하는 문법입니다. 기본적으로 아래와 같은 형태로 사용합니다. (매개 변수 목록) -> (실행문) Method Referece란? 메서드 참조란 람다 표현식을 더욱 간결하고 가독성있도록 표현하는 문법입니다. 아래와 같은 방법으로 사용할 수 있습니다. List names = Arrays.asList("Alice", "Bob", "Charlie"); // Lambda expression 사용 names.forEach(name ->.. 2023. 4. 27.
[JAVA] 불필요한 객채 생성을 막자. 싱글톤 패턴과 정적 초기화 블럭 동일한 기능을 하는 객체는 계속 만들어 쓰기 보단 하나만 만들어서 재사용하는 것이 좋다. 필요 상황 자바 언어 학습을 위해 텍스트 기반 게임을 만드는 중, 아래처럼 '스킬'이라는 클래스를 생성해서 사용했다. 그런데 정확히 동일한 스킬들이 매번 반복 사용되는 문제가 있을 것 같아, 해결방법을 모색해보았다. public class Skill { private String skillName; private int addAttackPower; . . . } // 유닛 객체 public class Unit { private String unitName; private ArrayList skillSet; // 여러 유닛 인스턴스가 동일한 기능의 여러 스킬 인스턴스를 가짐. . . . } 해결방법 1. 싱글톤 패턴 .. 2022. 7. 9.
[JAVA] 내부 클래스 간단 정리와 사용 이유 1. 정의 말 그대로 클래스 내부에 정의된 클래스이다. 2. 종류 익명 클래스를 제외하고는, 일반적인 멤버 변수와 메서드와 성질이 같다. 인스턴스 클래스(멤버 변수): 외부 클래스의 선언위치에서 선언, 스코프는 외부 클래스 정적 클래스(정적 맴버 변수): 외부 클래스의 선언 위치에서 선언, 스코프는 전역 지역 클래스(메서드): 외부 클래스의 메서드 안에서 선언 ,스코프는 메서드 익명 클래스: 클래스의 선언과 객체 생성을 동시에 하는 클래스(일회용) 3. 특징 중요하다고 생각되는 몇 가지 특징을 정리해보았다. 1. 외부 클래스 밖에서 일반적인 방법으로 인스턴스화 될 수 없다. 2. 외부 클래스의 멤버에 바로 접근할 수 있다. 심지어 프라이빗 변수에도 접근할 수 있다. //일반적인 클래스 사용방식 class.. 2022. 7. 8.
[Java 에러] Get 통신에서 JsonProperty가 동작하지 않을 때 문제 상황 아래와 같이 Get으로 통신을 할 때, DTO객체를 사용하려고 합니다. 그런데 DTO의 멤버 변수 이름이 Camel case로 되어 있고 client의 요청은 Snake case로 온다고 했을 때, @JsonProperty 어노테이션이나 @JsonNaming 어노테이션을 사용해서 자동으로 바꿔주려고 하는데, 이상하게 계속 제대로 인식되지 않고 아래처럼 null이 반환되고 있습니다. //controller class @GetMapping("/simple") public UserDto simpleTest(UserDto userDto) { return userDto; }​ //DTO 클래스 public class UserDto { @JsonProperty("user_name") private Str.. 2022. 6. 30.