개인공부/java(11)
-
JAVA - 함수형 인터페이스
함수는 들어오는 값이 같으면 나오는 값도 같아야한다. 2. 함수형 인터페이스와 람다 표현식 소개 함수형 인터페이스 (Functional Interface) ● 추상 메소드를 딱 하나만 가지고 있는 인터페이스 ● SAM (Single Abstract Method) 인터페이스 ● @FuncationInterface 애노테이션을 가지고 있는 인터페이스 람다 표현식 (Lambda Expressions) ● 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다. ● 코드를줄일수있다. ● 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수도 있다. 자바에서 함수형 프로그래밍 ● 함수를 First class object로 사용할 수 있다. ● 순수 함수 (Pure function) ○ 사이드 이팩트가 없..
2020.09.26 -
JAVA - 메타 애너테이션
메타 애너테이션 - 메타 애너테이션은 '애너테이션을 위한 애너테이션' - 메타 애너테이션은 java.lang.annotation 패키지에 포함 @Target -애너테이션을 정의할 때, 적용대상 지정에 사용 @Target({FIELD, TYPE, TYPE_USE}) @interface MyAnnotation {} // 애너테이션을 정의 @Retention -애너테이션이 유지(retention)이 되는 기간을 지정하는데 사용 class는 잘 안씀. -컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다. @Target(ElementType.MEHOTD) @Retention(RetentionPolicy.SOURCE) // 컴파일러가 읽어낸다음은 필요가 없기때문에 클래스파일에서 빠진다. 소스 파일에..
2020.09.26 -
JAVA - 표준 애너테이션
표준 애너테이션 들 @Override -오버라이딩을 올바르게 했는지 컴파일러가 체크하게 함. - 오버라이딩할 때 메서드 이름을 잘못적는 실수를 하는 경우가 많다. class Parent( void parentMethod() {} ) class Child extends Parent( void parentmethod() {} // 오타를 쳐서 전혀 다른 메서드가 생김. ) @Deprecated -앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙인다. - @Deprecated의 사용 예, Date클래스의 getDate() - 이 애너테이션이 붙은 대상은 다른 것으로 대체되었으니 더 이상 사용하지 말아달라 (권고) @deprecated public int getDate() { return normalize..
2020.09.26 -
JAVA -애너테이션
소스코드 java 파일과 그에 대한 정보인 xml 인 문서를 따로 업데이트 하다보니 소스코드만 업데이트 되고 문서 업데이트를 누락하거나 까먹는 경우가 생겨 양쪽 버젼이 맞지 않게 되는 경우가 생겼다. 소스코드와 그에 대한 정보를 하나의 파일로 관리한게 애너테이션이다. 한마디로 "주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공한다."(자바의 정석 p702 -남궁성 저자님) 예) @MappedSuperclass 위의 코드를 보면 @형태로 되어있다.
2020.09.25 -
자바 지네릭스 - 2020.07.24
지네릭스 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준 다는 뜻이다. 예를 들어, ArrayList와 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있긴 하지만 보통 한 종류의 객체를 담는 경우가 더 많다. 그런데도 꺼낼 때 마다 타입체크를 하고 형변환을 하는 것은 아무래도 불편할 수 밖에 없다. 게다가 원하지 않는 종률..
2020.07.25