enum : 열거형이라고 불리며, 서로 연관된 상수들의 집합이라고 불린다. 원래 자바에는 enum클래스가 존재하지 않았지만, JDK1.5에 추가되었다고 한다. C언어 같은 언어에서는 enum클래스의 역할은 단순히 상수들의 집합으로 사용되었지만, 자바는 타입까지 비교가 가능하다. enum을 만드는 방법 기본적으로 public enum Language { C, JAVA, KOTLIN, JAVASCRIPT } 이렇게 만들면 된다. 이들은 왼쪽부터 오른쪽으로 0번부터 3번으로 측정된다. System.out.println(Language.C.ordinal()); System.out.println(Language.JAVA.ordinal()); System.out.println(Language.KOTLIN.ordin..
자바가 제공하는 예외 계층 구조 비유 우리가 병이 생긴다면, 병원으로 간다. 그 병이 치명적일 수도 있고, 치명적이지 않을 수 있다. 만약, 그 병이 치명적이라고 가정한다면, 제대로 치료를 받지 않으면 죽게 될 수도 있다. 만약, 그 병이 치명적이지 않는다고 한다면, 병원에 가지 않고 자가 치료가 가능할지도 모른다. 실제 프로그램도 마찬가지다. 에러가 치명적이라면, 그 예외를 해결을 해야된다. 그래야 프로그램을 계속 유지할 수 있기 때문이다. 컴파일 에러 가벼운 감기 처럼(아닌 분들도 계시지만 ㅜㅜ),우리가 코드상에서 스스로 해결할 수 있는 에러도 존재한다. 이것을 컴파일 에러라고 한다. 하지만 이것도 치료하지 않는다면, 죽을 수도 있다. 이것을 치료조차 하지 않는다면? 여기서 알 수 있는 건 아무리 가..
프록시는 무엇을 뜻하는 걸까? 대안이라는 뜻을 가지고 있다. 가장 대표적인 예로 JPA를 들 수 있다. 간단하게 JPA코드를 작성해보겠다. public interface BookJpaRepository extends JpaRepository { } @SpringBootTest class BookJpaRepositoryTest { @Autowired BookJpaRepository bookJpaRepository; @Test void test() { System.out.println(bookJpaRepository); } } 인터페이스로 만들었지만.. 다양한 메소드를이 나오는 것을 확인 할 수 있다. 물론, 다른 인터페이스를 상속한다음 실행해도 위와 같은 결과는 나온다. 하지만.. 특정 메소드를 실행한다고..
네트워크에서 인터페이스는 포트를 지칭하는 말이다. 즉, 인터페이스로 어떤것을 사용할지 알 수 있게 도와주는 역할을 한다. 자바에서도 마찬가지다. 일반적으로 인터페이스는 규약을 정의할때 사용이 되어진다. 그래서 직접 구현하는 것보다, 추상적으로 서로간의 "약속"을 정할때 사용된다. 그러면 인터페이스는 어떻게 만드는걸까? 간단히 public interface Interfaces { } class => interface로 바꿔주면 된다. 구현하는 방법은 크게 2가지가 존재하는데, 다른 클래스에서 구현하는 방법 public abstract void hello(); 로 구현해되지만 public abstract는 생략이 가능하다. 먼저 메소드 몇 개를 구현해보자. public interface Interfaces ..
리플렉션을 학습하였다. 리플렉션에 대해 살짝 언급한다면, 클래스에 대한 정보를 아무런 제약없이 가져올 수 있다는 것인데... 이것을 잘못 사용할시.. 프로그램의 성능 이슈가 있을 수 있다. 또, 이것은 접근지시자 private도 접근할 수 있기 때문에 신중에 신중을 기여하면서 사용해야한다. 만약, 이렇게 사용할시, 엄청난 문제가 발생할지도 모른다. 리플렉션으로 무언가를 만들 수 는 없을까? 우리는 간단하게 DI 의존성 주입을 만들 수 있다. DI는 프로그램이 만들어지는 순서를 역으로 만든다는 것인데, 원래 객체가 들어가야 되지만 이것을 한번 꺽어서 만든다는 것이 특징이다. 이제 직접 만들어 보자. 일단 어노테이션부터 만들어야 된다. 왜냐하면 어노테이션으로 값을 찾기 때문이다. @Retention(Rete..
스프링을 공부하다보면.. 빈을 주입하는 (객체를 만들어주는)... 것이 나온다. @Repository public class SchoolRepository { } @Service public class SchoolService { @Autowired SchoolRepository schoolRepository; } 그리고 이것을 테스트 해보자. @SpringBootTest class SchoolServiceTest { @Autowired SchoolService schoolService; @Test void test() { System.out.println(schoolService.schoolRepository); } } 나는 분명히 new 키워드를 이용해서 만들지도 않았다. 그런데 정상적으로 객체값이 ..
*예제는 추후에 바꿔놓겠습니다. 지금은 만들기가 귀찮아서 공식문서꺼 사용하는것도 있네여ㅎㅎ; mockito는 moking을 하기 위한 프레임워크입니다. 모킹은 우리가 만든 객체를 사용하는 것이 아닌 프로그램이 임의적으로 만든 객체를 사용하는 것을 말합니다. 이는 진짜 객체와 가짜객체로 구분해서 불려지고 있습니다. 행동 정의 모킹 객체는 행동을 정의할 수 있다. 1번이 들어가면 "abc"가 나오고... 2번이 들어가면 "hello"가 나오는 식으로 진행된다. Mockito에는 Stubbing이라는 용어가 존재한다. 인터넷에 찾아보니 나오지 않는다.. ㅜㅜ; 아무튼 [인프런] 최고 강사님들중 한 분인 [백기선]님의 말씀을 빌리자면 Stubbing : 행동을 정의하는 것이라고 한다. 결국 가짜객체를 진짜 객체..
패키지 - 클래스의 묶음 - 클래스 파일을 한곳에 모아두는 역할을 한다. - 디렉토리 개념(폴더) 패키지를 만드는 방법 인텔리제이 기준 : mac => command + n win => alt + insert 특징 1. 패키지를 만들지 않는 상태에서, 클래스를 만들시, 기본 패키지라고 한다. 2. 패키지는 디렉토리처럼 하위 패키지를 만들 수 있다. 3. 다른 패키지에 있을 경우, 동일한 이름의 클래스 파일을 만들 수 있다. - Basic이라는 자바 파일을 계속 만들었다. 4. for,if등 이미 자바에서 사용된 예약어는 패키지로 사용이 불가능하다. import 키워드 다른 패키지에 존재하는 자바 파일을 호출 할 때 사용한다. - import문은 여러개 사용이 가능하다. - 패키지.클래스 형식으로 표현된다..
사진 터미널에 아래를 실행하는 방법으로는 해결 되지 않았다. mvn dependency::tree mvn clean install -U or Right-click on "project" Go to "Maven" >> "Update" 위 방법은 되지 않았다. 해결 방법 org.apache.maven.plugins maven-surefire-plugin 2.19.1 추가 가려진 부분 => 개인 정보
*원래 클래스 파트에서 소개를 해야되는데... 깜빡하고 하지 않해서 상속 파트에서 하게 되었습니다. 색칠된 부분은 상속파트에 밀접적으로 관련된 부분입니다.^^;;😃 시작하기 앞써.. 더보기 자바는 객체지향언어이다. 객체지향은 캡슐화, 추상화, 상속성, 다형성의 특징을 가지고 있다. 상속을 알아보기전에 객체지향의 특징을 하나씩 살펴보도록 하자. 1. 캡슐화(Encapsulation) 캡슐화는 변수와 메소드를 하나의 클래스로 묶는것을 말한다. 마치 편의점에서 파는 도시락과 비슷하다. 그림에서 보는것과 같이 까만색 플라스틱 상자?가 클래스이구 밥과 반찬은 메소드 혹은 변수다. 우리는 개발자이기때문에 코딩을 해보자. public class Lunch { String rice; String SideDish; pu..
클래스 정의하는 방법 클래스란 무엇일까요? 프로그래밍에서 클래스는 설계도를 뜻합니다. 즉, 객체를 생성되기 이전에 만드는 코드라고 생각할 수 있습니다. public class Name {} 기본적인 코드는 위와 같습니다. 처음 클래스를 공부하였을 때, 단순히 위 문장만 입력하면 된다고 생각했습니다. 이는 반은 맞고 반은 틀린 답이었습니다. 틀렸다는 것은 위 코드만 입력한다고 자바 jvm에서 코드를 만들어주지 않기 때문이죠. 그럼 어떻게 해야 할까요? 바로 파일명과 클래스명이 같아야 비로소 클래스를 정의했다고 할 수 있죠. 하지만 걱정 안 하셔도 됩니다. ide에서 파일을 만드는 것만으로도 이 모든 것을 해결할 수 있기 때문이죠. 즉, 그냥 파일만 만들면 된다는 뜻입니다. 그렇다면, 위 코드만 클래스를 만..
배열로 큐 구현하기. public class QueueArr { private int[] arr; private int size; private int cnt; public QueueArr(int size) { this.size = size; arr = new int[size+100]; } public void offer(int data) { arr[cnt] = data; cnt = cnt + 1; } public int poll() { if (cnt queue.poll()); } }