전체 글
-
람다와 스트림 - 람다식의 정의백엔드/자바 2021. 8. 24. 09:00
람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있다. 화살표 기호로 무언가 표시해주고, 무언가 많이 생략된 것인데 이것을 람다식이라 부른다. 람다식은 익명함수의 하나로 메서드를 간단하게 하나의 식으로 나타낸 것이다. 참고로 첫번째 체이닝된 메서드들을 풀어서 쓰면 다음과 같다. 붉은 박스 안의 코드가 위에서 붉은 줄로 표시해준 람다식과 동일한 역할을 한다. 이처럼 복잡한 메서드를 만들거나 컬렉션 자료를 다룰 때 람다식을 쓰면 깔끔한 코드 작성이 가능하다. 물론 이러한 람다식도 단점은 있다. 람다는 많은 부분이 생략되어 표현되므로 작업 효율..
-
어노테이션, 애너테이션(Annotation) - 애너테이션 정의하기백엔드/자바 2021. 5. 26. 16:09
어노테이션을 만드는 것은 크게 어렵지 않다. 기본적으로 인터페이스를 정의하는 것과 비슷하다고 생각하면 된다. 그리고 애너테이션의 요소는 추상메서드를 정의하듯이 하면 된다. 애너테이션 선언하기 위와 같이 @interface + 애너테이션명 + 중괄호 { }를 붙여서 정의하면 된다. 우선 위와 같이 정의만 해줘도 애너테이션의 형식은 갖춘 것이다. 실제로 아무 내용이 없는 애너테이션이라도 저렇게 형식만 갖추면 사용이 가능하다. 애너테이션의 요소 추가하기 애너테이션의 요소 추가하는 건 굉장히 쉽다. 인터페이스에서 추상메서드를 추가하듯이 메서드 형식으로 요소들을 추가해주면 된다. 이때 enums()와 testDate()를 보도록 하자. enums()는 열거형 데이터를 타입으로 가지는 요소이며, testDate()..
-
어노테이션, 애너테이션(Annotation) - 표준 애너테이션백엔드/자바 2021. 5. 26. 11:25
애너테이션이란? 주석처럼 프로그램에 영향을 미치지 않으면서, 유용한 정보를 제공하는 것. 간단히 말하면 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 제공하는 것이다. 애너테이션은 주석처럼 코드 사이에 존재하며, 코드에는 영향을 주지 않는 것이 특징이다. 코드 변경 없이도 다양한 부가적인 정보를 제공하거나 기능을 수행하게 만든다. 표준 애너테이션 애너테이션 설명 @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알려준다. @Deprecated 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. @SuppressWarnings 컴파일러의 특정 경고 메시지가 나타나지 않게 해준다. @SafeVarargs 지네릭스 타입의 가변 인자에 사용한다. @FuntionalInterface 함수형 인터페이..
-
열거형(Enum Types)백엔드/자바 2021. 5. 22. 19:48
열거(enum)형이란? 서로 관련된 상수들을 편리하게 선언하기 위한 목적으로 만들어진 것. 미리 정의된 상수들을 모아둔 집합으로 특수한 데이터 유형이다. 열거(enum)형 데이터 선언하는 방법 열거형 데이터를 선언하는 방법은 아주 간단하다. class를 선언하는 것처럼 자료형 선언하고 자료형 이름을 적고 중괄호 { }안에 상수를 적는다. enum을 사용하면 위와 같이 번거롭게 상수 지정을 해야했던 것과 달리 편하게 상수 지정이 가능하다. 열거(enum)형의 조상 - java.lang.Enum Object 클래스와 마찬가지로 열거형도 Enum이라는 클래스가 존재한다. 그래서 Enum 자료형을 사용하면 Enum 조상 클래스가 가진 메서드도 사용이 가능하다. 다음은 Enum 클래스가 가진 메서드다. 메서드 설..
-
지네릭스(Generics)와 Iterator & HashMap백엔드/자바 2021. 5. 22. 18:10
지네릭스와 Iterator 위와 같은 Student라는 일반 클래스가 있다고 가정해보자. 그리고 Student 클래스의 객체를 리스트에 저장한 다음 Iterator()메서드를 이용해서 Iterator 객체를 호출해서 리스트에 저장된 Student 객체의 이름을 출력하는 코드가 있다고 가정하자. 이때 Iterator객체의 next() 메서드는 Object 자료 타입으로 객체를 반환한다. 그렇기 때문에 Student의 변수인 s에 객체를 저장할 때 별도로 Student로 캐스팅을 한 것이다. 그런데 Iterator 객체를 호출할 때 지네릭스를 쓴다면 코드를 간결하게 쓸 수 있다. 위와 같이 미리 Iterator 객체를 호출할 때 지네릭스를 써서 이용할 객체를 미리 써두면 캐스팅이 필요없다. 그래서 훨씬 간결..
-
지네릭스(Generics) - 지네릭 메서드백엔드/자바 2021. 5. 22. 17:19
이전 지네릭스 관련 포스트에서 타입 매개변수는 사용 제한이 있다고 했다. static 멤버와 같이 쓰여질 때고 또 하나는 일반 클래스에서 사용될 때라고 했다. 이렇게 일반 클래스의 경우 타입 매개변수는 사용할 수 없어 컴파일 에러가 나는 것을 볼 수 있다. 지네릭 클래스라하더라도 static 메서드에선 타입 매개변수도 컴파일 에러가 나는 것을 볼 수 있다. 그럼 위처럼 타입 매개변수를 써준 것은 무엇일까? 이렇게 메서드의 선언부에 지네릭 타입이 선언된 메서드를 지네릭메서드라 한다. 하지만 지네릭 메서드의 는 우리가 아는 타입 매개변수 와는 다르다. 지네릭 메서드 우선 위와 같은 클래스들이 있다고 가정해보자. 이중에서 genericsMethod 클래스를 위와 같이 지네릭 클래스로 변경해보자. 이때 첫번째는..
-
지네릭스(Generics) - 와일드카드백엔드/자바 2021. 5. 21. 13:21
우선 지네릭스에 관해서 이전에 포스팅한 내용이 있다. 2021.05.21 - [백엔드/자바] - 지네릭스(Generics) - 와일드카드, 지네릭 메서드 거기서 예제 코드가 이어진다. 그래서 그 코드가 있어야 아래 내용을 이해할 수 있다. 시작하기 전에 간단히 코드들을 정리하면 다음과 같다. Box 클래스 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override public String toString() { return list+""; } } Box를 상속받은 Frui..
-
지네릭스(Generics) - 지네릭 extends, 지네릭의 한계백엔드/자바 2021. 5. 21. 13:13
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스 지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한 sgcomputer.tistory.com 이전에 글에서 지네릭스에 대해서 설명했는데, 예제는 거기서 쭉 이어서 진행하도록 할 예정이다. 제한적인 지네릭 타입 사용 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override ..