본문 바로가기

개발/JAVA4

공변반환 타이핑 이펙티브 자바의 builder 패턴을 읽다가 발견했다. 지금까지 모르고 있었는데 정말 신기한 기법이다. 자바의 변수가 "공변" 임을 이용하는 기법인데 소스를 보면서 확인하자 public class Main { abstract static class Test { int a = 1; public int getA() { return a; } abstract public Test ret(); } static class T extends Test { int b = 2; public int getB() { return b; } @Override public T ret() { return new T(); } } public static void main(String[] args) { T t = new T(); t.g.. 2021. 2. 26.
캡슐화란 무엇인가? 어떤 이점이 있는가? 객체지향을 공부하면 처음부터 귀에 못이 박히도록 듣는 단어가 있다. 바로 캡슐화다. 캡슐화가 도대체 뭐고, 이게 왜 중요한 요소일까? 일단 위키를 보도록 하자 캡슐화(영어: encapsulation)는 객체 지향 프로그래밍에서 다음 2가지 측면이 있다: 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 그래, 캡슐화는 객체의. 속성과 행위를 하나로 묶고 구현 내용을 외부에 감춘다는 것, 알겠다. 그래서 뭐 어쩌라는건가? 이게 왜 중요한가?? 이에 대한 답을 한번 찾아가 보도록 하자. 위키의 정의에 따르면, 캡슐화는 클래스 안에다가 데이터와 데이터를 처리하는 행위를 묶어 놓는 것 이라고 말할 수 있다. 사실 객체지향을 처음 .. 2021. 2. 18.
알고리즘 문제는 Stream을 사용해서 풀면 안되는 걸까? 알고리즘에 대한 감을 잃지 않기 위해 문제를 꾸준히 풀어가는 중이다. 기존에는 레거시 자바문법을 이용해서 풀어냈다면, 요즘은 모던 자바의 기능들을 활용해서 문제를 풀어나가고 있다. 그 중 가장 많이 사용하는 기법은 Stream을 이용하는 것인데, 이게 참 문제가 많은 것 같다... 백준의 2580 스도쿠 문제를 보자 www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 스도쿠 해답을 찾는 간단한 문제이다. 이전에 풀어본 경험이 있는데 소스가 많이 더러워서 깔끔하게.. 2021. 2. 17.
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 오류 해결법 코딩을하다가 해당 에러를 만났다.. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 간단하다 commons-logging 라이브러리 받으면 해결이다. 받으러 가기 2018. 2. 12.