Programming-[Backend]/Java (46) 썸네일형 리스트형 에러 발생 시 특정 기능을 하도록 만들기 : 정적 팩토리 메서드 1. 필요성 에러가 발생했을 때, 에러 객체를 만들면서 동시에 메시지를 쏘는 기능을 하도록 만들어야했다. 에러 객체를 new 키워드를 써서 생성자를 통해 만들어주고, 이후에 메시지를 쏴야하는데 이미 에러는 throw 되어 그 다음 코드는 실행하지 않게 되었다. if(error) { throw new MessageException("에러 발생"); sendMessage(); //실행되지 않음 } 2. 해결방법 MessageException 객체의 생성자 자체에 sendMessage 로직을 넣어주면 된다! 그러나 이런 경우에는 의미를 명확하게 하기 위해서 MessageException 객체가 정적 팩토리 메서드로 만들어지도록 하는 것이 추천된다. public static MessageException get.. [TIL][링크] 자바 리스트 stream split 처리 - groupingBy Java8 Collectors groupingBy Map groups = testList.stream().collect(Collectors.groupingBy(i -> i / 3)); List listByCollectors = new ArrayList(groups.values()); //will be.. listByCollectors = {ArrayList@1058} size = 4 0 = {ArrayList@1093} size = 3 1 = {ArrayList@1094} size = 3 2 = {ArrayList@1095} size = 3 3 = {ArrayList@1096} size = 1 출처: https://jinseongsoft.tistory.com/312 [진성 소프트] [TIL] 생성자 내부 멤버 메서드 실행(생성자 안에서 메서드 실행) 1. 배경 생성자 내부에서 메서드를 실행할려고 했다. 아래와 같은 코드이다. public MessageQueueAccessor(String name) { super(); this.name = name; } public MessageQueueAccessor(String name, String url) { super(); this.name = name; this.url = url; this.sendMessage(); //중략 private void sendMessage() { //로직 } } 즉 name, url을 인자로 받는 특정 생성자를 통해 인스턴스를 생성하는 경우 필드값을 초기화할 뿐 아니라, 멤버 메서드인 sendMessage 로직도 실행하고자 했다. 그런데 역할상 생성자가 초기화에만 관여해야지, .. [링크] isAssignableFrom 과 instanceof의 차이 1. 문법 차이 s instanceof String s.getClass().isAssignableFrom(String.class) 2. 확인 시점 차이 instanceof 은 컴파일 시점에 타입 체크 isAssignableFrom은 런타임 시점에 불특정한 클래스에 대한 타입 체크 다시 말해 instanceof 쓰면 쓰는 순간 IDE에서 바로 잡아냄, isAssignableFrom은 프로그램 실행하고 실제 해당 구문이 실행될 때 클래스 타입을 확인함 3. null Safe 차이 null instanceof {어떤 클래스} 는 false 반환 {어떤 클래스}.class.isAssignableFrom(null)은 NullPointerException 반환 참조 https://blog.naver.com/Post.. [TIL][링크][작성중] 자바 어노테이션 및 리플렉션(Java Annotation, Reflection) 리플렉션 기초개념 어떤 클래스의 멤버 변수, 메서드 등을 호출할 수 있다. (예시 추가) class의 변수들은 그야말로 변수다. 아직 어떤 값이 지정될 지 모른다. 클래스의 변수들은 생성자를 통해 인스턴스가 생성되면서 그 값들이 정해지므로 constant 하지 못하다. 어노테이션에서 attribute로 지정하기 위해서는 constant해야만 한다. 따라서 클래스 자체를 어노테이션의 속성값으로 지정할 수는 없다. 리플렉션 사용 시 유의점 인스턴스가 이미 생성되있는 경우라면 굳이 리플렉션을 사용할 필요가 없다. 성능에 좋지 않다. 컴파일 단계에서는 확인 불가하고 런타임에서만 오류를 확인할 수 있다. .setAccessible(true) 메서드를 통해서 접근 지정자(Java Access Modifier)를 무.. [작성중] 서비스 버스, jms 등 개요 jms는 자바에서 제공하는 메시징 서비스이다. 메시징 서비스는 서로 다른 네트워크를 갖는 서비스(애플리케이션)들간에 데이터를 비동기적으로 받을 수 있게 해준다. 다시 말해 서비스 1과 서비스 2 사이에 직접적인 통신이 일어나는 것이 아니라 서비스 1과 서비스 2 사이에 서비스 버스라고 하는 큐(Queue)가 있어서 서비스 1과 서비스 2 사이의 통신을 받아들이고 저장하는 역할을 한다. 서비스 1에서 특정 로직이 끝나고 서비스 버스로 완료된 데이터가 담겨있는 문자열을 보내면 서비스 버스에 해당 데이터가 '메시지(레터)'라는 이름으로 쌓이게 할 수 있다. 그럼 서비스 2가 서비스 버스에 접근해서 이 데이터를 확인하고 서비스 2의 특정 로직을 실행하거나 관련 데이터베이스에 정보를 저장할 수 있게 된다. .. [자바 기초] [작성중] 5. 자바의 동작원리 : JVM의 ClassLoader https://tecoble.techcourse.co.kr/post/2021-07-15-jvm-classloader/ https://joomn11.tistory.com/14 https://engkimbs.tistory.com/606 https://sas-study.tistory.com/262 https://hbase.tistory.com/174 https://velog.io/@agugu95/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%A1%9C%EB%94%A9%EA%B3%BC-%EC%86%8D%EB%8F%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EA%B8%B0%EB%B2%95%EB%93%A4 [자바 기초] 4. 자바의 동작원리 : JVM, JRE, JDK 구분과 차이점 잠시 Gabage Collector(GC)로 길이 샜다. 다시 자바의 동작원리의 큰 부분으로 돌아온다. GC는 좀 구체적인 감이 있지만 언젠가는 공부해야될 주제였다. 재미있었으니 됐다. 자바 동작원리를 이해하기 위한 가장 큰 틀로 자바의 바이트코드 - 기계어 - 하드웨어의 동작 방식 등에 대해서 공부했었다. 이제 바이트코드로 변환된 자바의 클래스 파일이 어떻게 메모리에 저장되서 동작되게 되는지 알아본다. 그중 가장 큰 개념인 JVM, JRE, JDK에 대해서 잠시 알고 간다. 1. JVM(Java Virtual Machine) JVM은 자바 코드를 실행하기 위한 핵심 동작 모듈이다. 2편에서 JVM의 native memory를 살펴보긴 했다만, 글의 목적에 맞게 좀 더 크게 보자. JVM 의 역할은 크게.. 이전 1 2 3 4 5 6 다음