https://programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public class Programmers2 { public static void main(String[] args) { System.out.println(Arrays.toString(solution(new int[]{1, 2, 3, 2, 3}))); } static public int[] solution(int[] prices) { int[] answer = new int[prices.length]; fo..
Generic 이란 무엇일까 ? 혹시 아래 코드들이 어떤식으로 다른지 정확하게 이해하고 있나요 ? 아니라면 이번시간에 차근차근 알아보도록 합시다 public class Generics { // T == type parameter private T t; T method(T t) { return null; } // T 를 반환하는 메서드 레벨의 type parameter static void method1(P t) { } // Generics와 상관없는 메서드 레벨의 type parameter (Parameter 를 받을 때 P 타입을 유추하기 때문에 사용가능) static E method2(P p) { return null; } // E 타입 P 타입을 받아 E 로 반환. 메서드 레벨의 type param..
해당 글은 토비의 봄 TV를 보고 정리한 것입니다. 먼저 더블 디스패치를 알기전에 디스패치에 대해 간략하게 알아보면, "어플리케이션이 어떤 메소드를 호출할 것인지 결정하고 실행하는 과정"을 의미한다 그리고 디스패치에는 크게 두가지로 나눠집니다 정적인 디스패치(Static Dispatch) 와 동적인 디스패치(Dynamic Dispatch) 정적인 디스패치는 컴파일타임에 어떤 메소드가 호출될지 이미 정해지고, 동적인 디스패치는 런타임에서 어떤 메소드가 호출될지 결정된다. 정적인 디스패치 e.g) 아래 코드는 반환 타입(Unit)도 같고, 함수명(run)도 같지만, 파라미터가 달라 이미 컴파일 시점에서 다른 함수 취급을 받게된다. 즉 실행되기전에 이미 어떤 함수가 호출될지 결정이 되어 있는 상황이다. cla..
프로그래밍 스펙의 람다 람다식? 익명 함수? 람다식, 람다 함수는 프로그래밍 언어에서 사용되는 용어로, 익명 함수를 지칭한다. 고로 람다 함수는 익명 함수와 같은 의미를 지닌다 라고 생각해도 될 것 같다. 물론 람다가 더 큰 표현이고, 람다의 특징 중 람다 식은 이름을 가질 필요가 없다(익명 함수) 또한 커링 같은 특징들도 있는데, 찾아보면 좋을 것 같다. 일급 함수 ? 함수를 우리가 사용하는 객체 처럼 사용할 수 있다면 일급 함수라고 부른다. 1. 함수를 변수에 할당 할 수 있어야하고 2. 인자에 담을 수 있어야 하고 3. 반환 형으로 사용할 수 있어야 한다. 함수의 시그니처 어디에든 함수가 들어갈 수 있다. public String(함수로 표현 가능) getString(String[](함수로 표현 가..
자바 8 이전에는 인터페이스의 모든 메서드가 추상 메서드이어야 했다. 구현부가 없어야 했다. 하지만 자바 8에서부터는 구현이 있는 정적 메서드, 기본 메서드를 추가할 수 있다. 정적 메서드 이전 관점에서는 인터페이스를 추상적인 의미를 가진다고 생각했고, 그렇기 때문에 구현을 하는 방식은 디자인 관점에서 맞지 않았지만, 이런 사고가 다양한 개발을 거치면서 진화했다. 특히 그 중에서도 팩터리 메서드는 인터페이스와 아주 궁합이 좋다. e.g IntSequence 인터페이스에는 다음과 같이 주어진 정수의 숫자 시퀀스를 만들어내는 정적 메서드 digitsOf() 를 추가할 수 있다 이 메서드는 IntSequence 인터페이스를 구현한 클래스 중에서 수많은 인스턴트들이 전달 되지만, 어느 클래스의 인스턴스인지 신경..
public class FileSequence implements IntSequence, Closeable { // something... } 위와 같이구현하면 FileSequence 클래스는 IntSequence 와 Closeable 을 슈퍼타입으로 둔다. (객체를 두 인터페이스 타입 중 어느 것으로도 변경할 수 있다는 말이다. 아주 활용도가 높다.) Tips. 변수를 인터페이스 타입으로 선언할 수 있지만, 타입이 인터페이스 자체인 객체는 만들 수 없다. 모든 객체는 클래스의 인스턴스여야 한다. -> FileSequence 클래스의 인스턴스를 만들어 IntSequence, Closeable 처럼 사용할 수 있지만, IntSequence 클래스의 인스턴스를 만들 수는 없다. 또한 객체는 실제 자신의 클래..
클래스 내부에 다른 클래스를 두는 방법중 대표적인 2가지가 중첩 클래스(static class), 내부 클래스(inner class)가 있다. 부제에 대한 답 : 중첩 클래스는 가시성을 제한하거나, Item, Node, Element, ViewHolder 같은 일반적인 이름을 사용하면서 정돈된 상태를 유지하는데 아주 유용하다. 왜 일까? 그전에 중첩 클래스와 내부 클래스에 대해 간단하게 알아보자 중첩 클래스 물품(item)의 비용을청구하는 Invoice 클래스가 있다고 생각하고, 물품에는 설명, 수량, 단가가 포함되어 있다 이를 중첩 클래스로 표현하면 아래와 같이 된다. 그리고 public static 으로 선언한 것 말고는 내부에 클래스를 선언하는 것과 크게 다른 것이 없어보인다 public class..
2020년 07월 12일 수정 아래 커밋을 보면 어떤식으로 FragmentFactory 를 사용할 수 있는지 알 수 있다. https://github.com/Nanamare/CleanArchitecture/commit/52f173b7042583da288cc5a5b03e4b84b0f4d65c [Feature] Change Fragment Factory logic · Nanamare/CleanArchitecture@52f173b Permalink Browse files [Feature] Change Fragment Factory logic Loading branch information Showing 14 changed files with 129 additions and 51 deletions. +1 −1 ..