[Java] default 메서드
default 메서드
CharSequence 인터페이스를 까보다가 왠 메서드명 앞에 default 키워드가 있길래 처음보는거라 정리해둔다.
코드는 아래와 같다.
public default IntStream chars() {
class CharIterator implements PrimitiveIterator.OfInt {
int cur = 0;
public boolean hasNext() {
return cur < length();
}
public int nextInt() {
if (hasNext()) {
return charAt(cur++);
} else {
throw new NoSuchElementException();
}
}
@Override
public void forEachRemaining(IntConsumer block) {
for (; cur < length(); cur++) {
block.accept(charAt(cur));
}
}
}
return StreamSupport.intStream(() ->
Spliterators.spliterator(
new CharIterator(),
length(),
Spliterator.ORDERED),
Spliterator.SUBSIZED | Spliterator.SIZED | Spliterator.ORDERED,
false);
}
코드 해석이 아직 잘 안되기는한데, 일단 default 키워드를 메서드 앞에 붙이면 인터페이스 안에서 바로 동작을 정의할 수 있게 된다.
그로 인해 오는 장점은 해당 인터페이스를 implements로 구현하려 할때 default로 정의된 메서드에 대해서는 구현을 생략할 수 있다는 것.
default 키워드는 JDK 1.8부터 추가되었으며, 인터페이스에 추상 클래스의 장점을 얹었다 !
'Programming > Java' 카테고리의 다른 글
[Java] 람다와 스트림 ( Lambda, Stream ) (0) | 2020.03.05 |
---|---|
[Java] enum 클래스 (0) | 2020.03.04 |
[Java] Scanner 클래스를 이용한 입/출력 (0) | 2019.12.29 |
[Java] 네트워크 프로그래밍 (0) | 2019.12.25 |
[Java] SLF4J 라이브러리 - 추상 Logging Framework (0) | 2019.12.24 |
댓글
이 글 공유하기
다른 글
-
[Java] 람다와 스트림 ( Lambda, Stream )
[Java] 람다와 스트림 ( Lambda, Stream )
2020.03.05 -
[Java] enum 클래스
[Java] enum 클래스
2020.03.04 -
[Java] Scanner 클래스를 이용한 입/출력
[Java] Scanner 클래스를 이용한 입/출력
2019.12.29 -
[Java] 네트워크 프로그래밍
[Java] 네트워크 프로그래밍
2019.12.25