반응형 전체 글115 [Java] Optional<T>, Optional 타입 : 래퍼 클래스, 코드의 복잡성을 낮추다. Optional 는 지네릭 클래스로 T타입의 객체를 감싸는 래퍼 클래스이다. Optional 타입에는 모든 타입의 참조변수를 담을 수 있다. public final class Optional { private final T value; // T 타입의 참조변수 ... } } * java.util.Optional은JDK 1.8부터 추가됨. 장점 : Optional 클래스 사용 시 널 체크를 내부에서 처리하여 코드의 복잡도를 낮출 수 있다. isNull, nonNull, requireNonNull()과 같은 메서드를 통해서! → NullPointerException이 발생하지 않는 코드작성이 가능하다는 이야기이다! 관련 Method - Optional객체 생성 Optional.of(T) Optional.of.. Java 2022. 9. 4. [Java] Wrapper 클래스 : 기본 타입의 데이터를 객체로 취급하다.( 오토박싱, 오토언박싱) Wrapper(포장) 객체 : 기본 타입의 데이터를 포장하기 때문에 붙여진 이름이다. 래퍼 클래스가 사용되는 이유는 기본데이터 타입이 아닌 Object가 필요한 경우가 있기 때문이다. 기본 타입이 아닌 Object가 필요한 경우. 1. Generic에서 타입 파라미터로 참조타입(Reference Type)만 정할 수 있다. int, short, double 등 기본 타입(primitive type)은 올 수 없다. → 이와 같은 맥락으로 Collection 프레임 워크는 제네릭을 사용하기 때문에 객체 형태의 데이터만 파라미터로 올 수 있다. 그래서 우리가 ArrayList, ArrayList과 같이 사용하는 것이다. 2. 기본 자료형의 값을 문자열로 변환하는 경우, 혹은 반대의 경우 Double d = .. Java 2022. 9. 3. [Java] 람다식 - Lambda Expression Thread에서 Runnable을 접하면서 lambda식 형태를 처음 봤었다. 이후 안드로이드 UI, 파이썬 등을 하면서 종종 봤었는데, 사용하는 방법만 알고 넘어왔기 때문에 이번 글을 통해 정리를 하려한다. 람다식의 도입 람다식의 도입으로, 자바는 객체지향언어인 동시에 함수형 언어가 되었다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지기 때문에, 람다식을 익명함수라고도 한다. 함수형 인터페이스 자바에서 모든 메서드는 클래스에 포함되어야 한다. 람다식은 익명 클래스의 객체라 보면 된다. 람다식은 어떻게 불러와서 사용할 수 있을까? 타입이 있어야 하지 않을까? 그 타입을 함수형 인터페이스라 보면 편하다.(조금 더 내리면 좀 더 자세한 설명 있음) public interface MyFunct.. Java 2022. 8. 29. [Java] BigDecimal - Java에서 정밀한 숫자 표현하기 문제점 : Java 언어에서는 숫자를 표현하기 위해 int, long, double, float 등의 기본형을 사용한다. 이러한 기본형 중에 가장 많이 사용 되는 float, double형은 우리가 원하지 않는 결과를 보여주기도 한다. double a = 10.0000001; double b = 7.00010000; System.out.println(a + b); --> 결과 : 17.000100099999997 double과 float의 특징 이진 부동 소수점 연산에 사용되며, 넓은 범위의 수를 빠르게 정밀한 근사치를 구할 수 있도록 설계 되었다. 그 말인 즉, 정밀한 계산과는 맞지 않는다. 이는 이진수를 통해서 0.1과 10의 음의 거듭제곱수를 표현할 수 없기 때문에 발생한다. 10진수로 0.1은 2.. Java 2022. 8. 24. [Java] 문자열 split 할 때 마침표(.) : split(".") → split("//.") split()함수는 인자로, regex 정규식을 받는다. (이걸 몰랐네 ㄷ..ㄷ) "."은 정규식에서 아래와 같은 의미를 가지기 때문에 split에서 사용 시 원하는 결과를 얻을 수 없다. . matches any character (except for line terminators) 어떤 문자와도 매칭이 된다.(라인 터미네이터 빼고) 아래와 같이 프린트를 해보면 아무런 결과도 출력되지 않는다. t는 길이가 0 인 String 배열인 셈. public static void main(String[] args) { String path = "A.B.C"; String[] t = path.split("."); for (String a : t) { System.out.println(a); } } 포인트 : "... Java 2022. 8. 2. [Java] 폴더 생성 - File mkdir()/ mkdirs() 안녕하세요. 펄이라고 합니다. 원하는 폴더에 파일을 생성하는 기능을 구현하는 도중, 폴더 경로가 없을 경우에는 파일이 생성되지 않는 다는 것을 알게되었습니다. 이런 상황에서는 미리 폴더를 생성해야 하는데, mkdir을 쓰니 폴더가 생성되지 않았습니다. 상위 폴더가 있을 경우 폴더 생성 - mkdir() mkdir()은 상위 폴더가 있는 경우에만 폴더 생성이 가능합니다. 예를 들어 C:₩users₩a₩b폴더 생성을 원하는 경우 C:₩users₩a폴더가 이미 생성되어 있어야 합니다. import java.io.File; public class testMain { public static void main(String[] args) { File f = new File("C:\\test\\test"); // 생.. Java 2022. 6. 14. [Java 객체 지향 디자인 패턴] 10. 데커레이터 패턴 - 여러 기능의 조합 상속을 통한 기능의 확장은 각 기능별로 클래스를 추가해야 한다는 단점이 있다. -> 각 추가 기능 별로 개별적인 클래스를 설계하고 기능을 조합할 때 각 클래스의 객체 조합을 이용하여 기능의 확장을 하도록 한다. 정의 데커레이터 패턴은 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우게 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계하는 방식이다. 데커레이터 패턴은 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴이다. 여기서 핵심은 컴포지션 관계에 있다. 주로 생성자를 통해서 component를 이어 받는데, 이를 통해서 기본 객체에 살을 덧붙여 갈 수 있다. - Co.. Java/Java 객체지향 디자인 패턴 2022. 5. 10. [Java 객체 지향 디자인 패턴] 9. 옵서버 패턴 - 통보의 캡슐화 옵서버 패턴 데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용하다. 예를 들어 새로운 파일이 추가되거나 기존의 파일이 삭제되었을 때 탐색기는 이를 즉시 표시할 피룡가 있다. 탐색기를 복수 개 실행하는 상황이나 하나의 탐색기에서 파일 시스템을 변경했을 때는 다른 탐색기에게 즉각적으로 이 변경을 통보해야 한다. 옵서버 패턴은 통보 대상 객체의 관리를 Subject 클래스와 Observer 인터페이스로 일반화 한다. 이를 통해 데이터 변경을 통보하는 클래스(ConcreteSubject)는 통보 대상 클래스나 객체(ConcreteObserver)에 대한 의존성을 없앨 수 있다. 결과적으로 옵서버 패턴은 통보 대상 클래스나 대상 객체의 변경에도 Concre.. Java/Java 객체지향 디자인 패턴 2022. 5. 9. [Java 객체 지향 디자인 패턴] 8. 커맨드 패턴 - Command Pattern : 기능의 캡슐화 커맨드 패턴 커맨드 패턴은 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할 때 유용하다. 커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자(Invoker) 클래스와 실제 기능을 실행하는 수신자(Receiver)클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있게 해준다. - Command : 실행될 기능에 대한 인터페이스. 실행될 기능을 execute메서드로 선언함. - ConcreteCommand : 실제로 실행되는 기능 구현. 즉, Command라는 인터페이스 구현함. - Receiver를 Attribute으로 가지고 있음. - Invok.. Java/Java 객체지향 디자인 패턴 2022. 3. 17. [안드로이드 스튜디오]코틀린. Inlay Hints. Editor Hint, 힌트, Type힌트 코틀린을 이제 막 공부하는 입장에서, 변수타입이 생략되는 것이 편하기도 합니다. 하지만, 어떤 타입인지 명확히 알고 싶을 때 Hint옵션을 On 해준다면 좀 더 정확하게 이해하면서 배울 수 있을 것 같네요~ 다른 언어에 대해서도 가능한 것 같습니다.^^ hint 적용 전. hint 적용 후. 도움이 되셨길... 카테고리 없음 2022. 3. 15. [Java 객체 지향 디자인 패턴] 7. 스테이트 패턴 - State Pattern : 상태의 캡슐화 상태란 객체가 시스템에 존재하는 동안, 즉 객체의 라이프 타임 동안 객체가 가질 수 있는 어떤 조건이나 상황을 표현한다. 스테이트 패턴 스테이트 패턴은 상태에 따라 동일한 작업이 다른 방식으로 실행될 때 해당 상태가 작업을 수행하도록 위임하는 디자인 패턴이다. 스테이트 패턴의 목표는 현재 시스템이 어떤 상태에 있는지와 상관없이 구성하고, 상태변화에도 독립적이도록 코드를 구현하는 것이다. 이를 위해서 상태를 클래스로 분리해 캡슐화 한다. Light(형광등)은 State를 attribute로 가지고 있으며, 외부에서 의존성을 주입 받기 위해 setState Method까지 가지고 있다. State Interface를 구현한 형광등의 상태인 ON, OFF가 있으며, 각 상태에서 on, off를 실행하는 코드를.. Java/Java 객체지향 디자인 패턴 2022. 3. 14. [Java 객체 지향 디자인 패턴] 6. 싱글턴 패턴 - Singleton Pattern : 단하나! 비동기 시 주의 안녕하세요~ 이 패턴은 회사에서도 자주 접해서 꽤나 친숙한 패턴입니다. 좀 빨리 넘어갈 수 있지 않을까 생각해봅니다. ㅎ.ㅎ 6. 싱글턴 패턴 - Singleton Pattern 싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고, 어디서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴입니다. - Singleton : 하나의 인스턴스만을 생성하는 책임이 있고, getInstance메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행한다. public class Singleton{ private static Singleton instance=null; public static Singleton getInstance(){ if(instance==null) instance=ne.. Java/Java 객체지향 디자인 패턴 2022. 2. 23. 이전 1 ··· 6 7 8 9 10 다음 반응형