Programming/Java14 [Java] 리플렉션 (Reflection)이란 무엇일까? (개념/ 예시) 서론 이번 포스팅에서 다룰 내용은 '리플렉션'이다. 최근 "리플렉션이 무엇인가요?" 라는 질문을 받았는데, 제대로 된 답변을 못한 것 같다. C# 개발을 할 때 분명 사용은 해보았지만 개념적으로 설명하기엔 많이 미비한것같아 이번 기회에 정리를 해보려한다. 리플렉션(Reflection)이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API를 말하며, 컴파일 시간이 아닌 실행 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이라 할 수 있다. 그럼 이 리플렉션은 언제 사용할까? 동적으로 클래스를 사용해야할 때 사용한다. 다시 말해, 작성 시점에는 어떠한 클래스를 사용해야할지 모르지만 런타임 시점에서 가져와 실행해.. Programming/Java 2022. 9. 23. [Java] 코딩테스트 자주 사용하는 문법 정리 서론 Java로 알고리즘 문제를 풀 때 자주 사용하게 되는 문법들을 정리하려합니다. 계속해서 추가 예정입니다. 형 변환 Char To Int char myChar = '3'; int myInt = Character.getNumericValue(myChar); System.out.println(myInt); //결과: 3 String To Char String myString = "apple"; char[] myChars = myString.toCharArray(); for (int i=0; i 배열 요소 모두 더하기 int arr[] = new int[] {12,34,45,21,33,4}; int sum = Arrays.stream(arr).sum(); System.out.println("Array Su.. Programming/Java 2022. 7. 15. [Java] Singleton 패턴이란? (개념/ 사용 이유/ 장단점/ 예제) 서론 이번 글에서는 스프링 컨테이너를 이용하기 전 원초적인 싱글톤 패턴의 구현과 싱글톤 패턴의 개념/ 사용이유/ 장단점 등에 대해 알아보려한다. 싱글톤(Singleton) 패턴이란? 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴을 말한다. 이는 불필요한 인스턴스 생성을 막기 위해 사용한다고 보면 되는데, 메모리 관리에서는 장점이 많아서 가장 많이 쓰이는 디자인 패턴인데 물론 단점도있다. 하나씩 알아보자. 장점 다른 객체의 요청이 들어왔을 때 이미 처음 생성 때 만들어진 인스턴스로만 재활용을 할 수 있어 불필요한 객체 생성을 안해도된다. --> 메모리 효율성 ↑ 하나의 인스턴스를 사용하기 때문에 전역적으로 데이터 공유가 용이하다. 이미 생성해놓았기 때문에 객체 생성 시간이 줄어든다. 단.. Programming/Java 2022. 5. 29. [Java] Optional<T> 이란? (개념/ 종류 별/ 사용 방법/ 예제) 서론 프로그래밍을 하다보면 가장 조심해야할 에러 중 하나가 NPE(NullPointException)이다. 이 NPE는 보통 컴파일할 때 잡지 못하고 실행 중 갑자기 발생하는 에러이기에 잘못 걸리면 엄청 골치아파지는 에러 중 하나이기 때문이다. 그래서 우리는 보통 NPE를 방지하기 위해 null 검사 로직을 넣게 되는데 이 null인지를 검사하는 로직이 추가될 수록 코드가 복잡해지고 지저분해질 수 있다. 이번에 그래서 Java에서 Optional이라는 NPE를 방지할 수 있는 함수형 클래스를 지원해주게 되었는데, 어떻게 사용하고 사용하면 어떤 효과가 있는지 알아보자. NPE(NullPointException) 이란? public static void main(String[] args) { Map map .. Programming/Java 2022. 5. 21. [Java] 함수형 프로그래밍 - Function Interface / Custom Functional Interface (개념 / 예제) 서론 이번글에서는 함수형 프로그래밍에서 기초라고 볼 수 있는 Function Interface와 Functional Interface를 Custom하여 구현하는 방법에 대해 정리해보려한다. 우선 기본적인 Function Interface 예제를 적용 전과 후를 작성하여 왜 함수형 프로그래밍을 하는지에 대해 알아보자. Function Interface [Function Interface 적용 전] Adder (Class) import java.util.function.Function; public class Adder implements Function{ @Override public Integer apply(Integer x) { return x + 10; } } FunctionInterface (Cla.. Programming/Java 2022. 5. 12. [Java] SOLID - 의존성 역전 원칙 (DIP / Dependency Inversion Principle)이란? (개념/ 예제) 서론 드디어 마지막 순서인 객체지향 설계 원칙(SOLID)의 DIP에 대해서 알아보자! 객체지향 설계 5대 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Liskov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존성 역전 원칙 DIP(Dependency Inversion Principle) - 의존성 역전 원칙이란? DIP의 뜻을 정의한 내용은 아래와 같다. "고수준 모듈은 저수준 모듈에 의존하면 안된다. 이 두 모듈 .. Programming/Java 2022. 5. 12. [Java] SOLID - 인터페이스 분리 원칙 (ISP / Interface Segregation Principle)이란? (개념/ 예제) 서론 이번 글에서는 저번 글에서 정리한 리스코프의 법칙에 이어 SOLID에서 I에 속하는 ISP에 대해 정리해보겠습니다. 객체지향 설계 5대 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Liskov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 ISP(Interface Segregation Principle) - 인터페이스 분리 원칙이란? 이 원칙의 개념은 쉽게 이해하기 위해서는 이름 그대로 인터페이스를 .. Programming/Java 2022. 5. 12. [JAVA] SOLID - 리스코프 치환 원칙 LSP(Liskov Substitution Principle) 서론 이번 글에서는 L에 속하는 리스코브 원칙에 대해 알아보려한다. 객체지향 설계 5대 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Liskov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 LSP(Liskov Substitution Priciple) - 리스코프 치환 원칙이란? 서브 타입은 언제든 자신의 기반(부모) 타입으로 교체할 수 있어야 한다는 원칙을 말한다. 이 말을 다시 말해 객체의 상속관계에서.. Programming/Java 2022. 5. 8. [JAVA] SOLID - 개방 폐쇄 원칙 OCP(Open Closed Principle) 서론 이번 글에서는 개방 폐쇄 원칙(OCP)에 대해 알아볼려한다. 바로 알아보자 :) 객체지향 설계 5대 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Liskov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존성 역전 원칙 OCP(Open Closed Priciple) - 개방 폐쇄 원칙이란? 확장에는 열려있으나 변경에는 닫혀있어야 한다는 원칙이다. 이것이 무슨말일까 ? 우선 여기서 말하는 확장과 변경에 대해 알아보자.. Programming/Java 2022. 3. 15. [JAVA] SOLID - 단일 책임 원칙 SRP(Single Responsibility Principle) 서론 최근 정보처리기사 공부를 진행하면서 오랜만에 해당 개념들을 접하게 됐는데 객체지향 언어를 개발하는 코더 입장에서 기본적인 설계 원칙도 잘 모르고 마구 개발을 한다라는 것이 얼마나 불운한 개발자로 성장할 것 인지 체감해볼 수 있었다. 이번 챕터에서는 SRP인 "단일 책임 원칙"에 대하여 정리해 볼 것이다. 객체지향 설계 5대 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Liskov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Princi.. Programming/Java 2022. 3. 11. [JAVA] 문자열을 Reverse 하는 방법 서론 개발관련 웹 서핑을 하다가 String을 Reverse하는 방법을 질문하는 글을 접했다. 순간 String에서 기본적으로 reverse()라는 함수를 지원하지않을까? 라는 생각이 들어 입력해봤지만 그런 함수는 존재하지 않았다. 아래에서 해당 방법을 알아보자. 여러 방법이 있지만 가장 간단한 방법 한가지만 메모해두려고 한다. Stringbuilder 활용하기 public static void main(String[] args) throws NumberFormatException, IOException { String str = "abcdef"; StringBuilder sb =new StringBuilder(str); String reverse_str = sb.reverse().toString(); .. Programming/Java 2022. 3. 11. [JAVA] StringBuilder란? (개념 / 사용 이유 / 클래스 라이브러리 만들기 / 예제) 서론 해당 글의 내용은 굉장히 심플한 내용이고 기본적인 내용이기에 필자는 이 내용을 글로 정리를 할까 말까 고민을 했지만 이 시간에 정리 다 했겠다란 생각에 글쓰기 버튼을 눌렀다. 그럼 한번 알아보자. Stringbuilder 기능 String으로 되어있는 문자열을 합칠 수 있다. Stringbuilder 사용이유 우리는 String과 "+"를 이용하여 String을 합칠 수 있다. 그런데 StringBuilder를 사용하는 이유가 무엇일까? 그 이유는 아래와 같다. 우선 기존 방식인 String과 "+"을 사용한 방식을 살펴보자. String str = "안" + "녕"; //str 결과 : "안녕" StringBuilder sb = new StringBuilder(); sb.Append("안"); s.. Programming/Java 2022. 3. 8. 이전 1 2 다음 💲 많이 본 글