«java8» 태그된 질문

Java 8은 최신 버전의 Java 플랫폼을 나타냅니다.

10
전통적인 널 포인터 검사 대신 Java 8+에서 Optional을 사용하는 이유는 무엇입니까?
우리는 최근에 Java 8로 옮겼습니다. 이제 응용 프로그램에 Optional개체가 넘칩니다 . Java 8 이전 (스타일 1) Employee employee = employeeServive.getEmployee(); if(employee!=null){ System.out.println(employee.getId()); } Java 8 이후 (스타일 2) Optional<Employee> employeeOptional = Optional.ofNullable(employeeService.getEmployee()); if(employeeOptional.isPresent()){ Employee employee = employeeOptional.get(); System.out.println(employee.getId()); } Optional<Employee> employeeOptional = employeeService.getEmployee();서비스 자체가 옵션을 반환 할 때의 부가 가치는 …
110 java  java8 

5
추상 클래스가 이미 있는데 왜 기본 및 정적 메소드가 Java 8의 인터페이스에 추가 되었습니까?
Java 8에서 인터페이스에는 구현 된 메소드, 정적 메소드 및 소위 "기본"메소드 (구현 클래스를 대체 할 필요가 없음)가 포함될 수 있습니다. 내 (아마도 순진한) 견해로는 이와 같은 인터페이스를 위반 할 필요가 없었습니다. 인터페이스는 항상 이행해야 할 계약이었으며 매우 단순하고 순수한 개념입니다. 이제 여러 가지가 혼합되어 있습니다. 내 의견으로는 : 정적 메소드는 …

3
인수를 취하지 않고 아무것도 반환하지 않는 함수의 이름은 무엇입니까? [닫은]
Java 8 java.util.function패키지에는 다음이 있습니다. 기능 : 하나의 인수를 취하여 하나의 결과를 생성합니다. 소비자 : 하나의 주장을 취하고 아무 것도 생산하지 않습니다. 공급자 : 논증하지 않고 하나의 결과를 산출합니다. ... : 프리미티브, 2 개의 인수 등을 처리하는 다른 경우 ... 그러나 나는 " 논쟁을 취하지 않고 아무 것도 발생시키지 않는 …

3
Java 8 java.time 클래스에 getMillis () 메소드가없는 이유는 무엇입니까?
Java 8에는 java.time 패키지에 날짜 및 시간에 대한 완전히 새로운 라이브러리가 있으며, 이전에 JodaTime을 사용하거나 자체 날짜 처리 도우미 메소드를 작성 해야하는 번거 로움이있는 사람에게는 매우 환영합니다. 이 패키지의 많은 클래스는 타임 스탬프를 나타내며 타임 스탬프 getHour()에서 시간 을 가져 오거나 getMinute()타임 스탬프에서 분 getNano()을 가져 오거나 타임 스탬프 등에서 …
64 java  java8 

3
Java 8에서 람다 구문 대신 메소드 참조 구문을 사용하면 성능 이점이 있습니까?
메소드 참조가 람다 랩퍼의 오버 헤드를 생략합니까? 그들은 미래에 있을까요? 메소드 참조에 대한 Java 학습서에 따르면 : 때로는 ... 람다 식은 기존 메소드를 호출하는 것 외에는 아무것도하지 않습니다. 이 경우 기존 방법을 이름으로 참조하는 것이 더 명확합니다. 메소드 참조를 통해이를 수행 할 수 있습니다. 그것들은 이미 이름을 가진 메소드에 대한 …

6
Java 점검 예외에 대한 임시 해결책
람다 및 기본 메소드 인터페이스에 대한 새로운 Java 8 기능이 많이 있습니다. 그러나 여전히 확인 된 예외로 지루합니다. 예를 들어 객체의 보이는 필드를 모두 나열하려면 간단히 다음과 같이 작성하고 싶습니다. Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); 그러나 get메소드가 Consumer인터페이스 계약에 동의하지 않는 확인 된 예외를 throw 할 수 있으므로 해당 예외를 …

3
for 루프 대신“기능적 작업”을 사용해야하는 이유는 무엇입니까?
for (Canvas canvas : list) { } NetBeans는 "기능적 조작"을 사용하도록 제안합니다. list.stream().forEach((canvas) -> { }); 그러나 이것이 왜 선호 됩니까? 무엇이든 읽고 이해하기가 더 어렵습니다. 을 호출 stream()한 다음 forEach()매개 변수와 함께 람다 식 을 사용합니다 canvas. for첫 번째 스 니펫 의 루프 보다 더 좋은 방법은 없습니다 . …

3
스트림 요소를 수정하기 위해 peek ()를 사용하는 것이 반 패턴입니까?
내가 스트림을 가지고 있고 스트림 중간에 "풍부하게"하고 싶다고 가정 해 보겠습니다 peek(). 예를 들면 다음과 같습니다. streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); 코드에서이 시점에서 Things를 변경하는 것이 올바른 동작이라고 가정합니다. 예를 들어, thingMutator메소드는 "lastProcessed"필드를 현재 시간으로 설정할 수 있습니다. 그러나 peek()대부분의 상황에서 "보이지만 만지지 마십시오"를 의미합니다. 스트림 요소 peek()를 음소거 하는 데 사용 하는 것이 …

1
Java 8의 형식 유추
Java 8에서 새로운 람다 표기법 (예 : 이 기사 참조 )을 도입하려면 일종의 유형 유추가 필요합니까? 그렇다면 새로운 유형의 시스템이 Java 언어 전체에 어떤 영향을 미칩니 까?

9
변수를 null 검사하는 것보다 선택적 우선 순위를 사용하는 이유는 무엇입니까?
두 가지 코드 예제를 보자. if(optional.isPresent()) { //do your thing } if(variable != null) { //do your thing } 가장 분명한 차이점을 알 수있는 한, Optional은 추가 개체를 만들어야한다는 것입니다. 그러나 많은 사람들이 옵션을 빠르게 채택하기 시작했습니다. 널 (null) 검사와 비교하여 옵션을 사용하면 어떤 이점이 있습니까?
25 java  java8 

3
isPresent ()를 호출하지 않고 Optional.get ()이 왜 좋지만 iterator.next ()가 아닌가?
새로운 Java8 스트림 API를 사용하여 컬렉션에서 하나의 특정 요소를 찾을 때 다음과 같은 코드를 작성합니다. String theFirstString = myCollection.stream() .findFirst() .get(); 여기서 IntelliJ는 isPresent ()를 먼저 확인하지 않고 get ()을 호출한다고 경고합니다. 그러나이 코드는 다음과 같습니다. String theFirstString = myCollection.iterator().next(); ... 경고가 없습니다. 두 가지 기술 사이에 어떤 방식으로 스트리밍 …
23 java8 

1
Java 8 코드에 대한 조건부 적용 범위를 측정하는 것이 이치에 맞습니까?
Java 8이 등장한 이후 현재 Java 도구로 조건부 코드 적용 범위를 측정하는 것이 더 이상 사용되지 않는지 궁금합니다. 자바 8의로 Optional하고 Stream우리는 종종 쉽게 가능한 모든 실행 경로를 테스트하지 않고 매우 높은 조건 적용을받을 수 있습니다 코드 지점 / 루프를 방지 할 수 있습니다. 오래된 Java 코드와 Java 8 코드를 …

3
일반적으로 컬렉션을 반환 할 때마다 스트림을 반환하는 것이 제정신입니까?
레거시 코드와 관련이없는 API를 개발하는 동안 종종 결과를 수집하여 Streams 파이프 라인으로 끝나는 메소드를 작성하는 경우가 종종 있습니다. 이 같은: ImmutableSet<T> deriveSomethingMeaningfulFromPrivateState() { return myPrivateThingies.stream() .map(this::ownerOfThing) .map(Owner::socialStatus) .filter(SocialStatus::isHeAFineMatey) .collect(MyCustomCollectors.toImmutableSet()); } 이제이 클래스의 대부분의 클라이언트는 일반적으로 요소를 검색하고 반복하기 위해 Collection (이 경우 ImmutableSet)이 필요하지만 일부 클라이언트는 Stream을 사용하여 더 많은 …

1
스칼라 함수를 Java 8 메소드에 전달
다음 스칼라 코드는 작동하며 함수를 기대하는 Java 메소드로 전달 될 수 있습니다. 더 깔끔한 방법이 있습니까? 첫 번째 패스는 다음과 같습니다. val plusOne = new java.util.function.Function[Int,Int] { override def apply(t:Int):Int = t + 1 override def andThen[V](after:function.Function[_ >: Int, _ <: V]): function.Function[Int, V] = ??? override def compose[V](before:function.Function[_ >: …

1
Collection.stream (). filter (). forEach ()가 각 루프의 표준에 비해 비효율적입니까?
IntelliJ IDEA는 지금 다음 for-each 루프를 Java 8 "forEach"호출로 교체 할 것을 권장했습니다. for (Object o : objects) { if (o instanceof SomeObject) { doSomething(); } } 권장 통화는 다음과 같습니다. objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething()); Stream의 기본 기능이 어떻게 작동하는지 오해하지 않는 한, 스트림 사용은 표준 for-each …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.