> Java > java지도 시간 > 본문

Java8의 Optional 사용과 Kotlin의 nullable 유형 사용에 대한 비교 세부정보

黄舟
풀어 주다: 2017-09-19 10:15:41
원래의
1845명이 탐색했습니다.

이 글에서는 주로 Java8의 Optional 유형과 Kotlin의 nullable 유형 사용을 비교하여 소개합니다. 이 글은 모든 사람의 학습이나 작업에 대한 특정 참고 학습 가치를 제공합니다. 필요한 친구분들은 에디터를 따라가서 함께 배워보세요.

이 글은 주로 Java8의 Optional 유형과 Kotlin의 nullable 유형 사용에 대한 관련 내용을 소개합니다. 참고 및 학습을 위해 공유됩니다. 아래에서는 자세한 소개를 살펴보겠습니다. :

Java 8에서는 Optional 유형을 사용하여 nullable 유형을 표현할 수 있습니다.


package com.easy.kotlin;

import java.util.Optional;

import static java.lang.System.out;

/**
 * Optional.ofNullable - 允许传递为 null 参数
 * Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
 * Optional<String> b = Optional.of(s);
 */
public class Java8OptionalDemo {

 public static void main(String[] args) {
 out.println(strLength(Optional.of("abc")));
 out.println(strLength(Optional.ofNullable(null)));
 }

 static Integer strLength(Optional<String> s) {
 return s.orElse("").length();
 }
}
로그인 후 복사

실행 출력:


3
0
로그인 후 복사

그러나 이러한 코드는 여전히 그다지 우아하지 않습니다.

Groovy는 안전한 속성/메서드 액세스 연산자를 제공합니다. ?.


user?.getUsername()?.toUpperCase();
로그인 후 복사

Swift에도 유사한 구문이 있으며 이는 Optional 유형에서만 작동합니다.

Kotlin의 Nullable 유형

위의 Java 8 예제는 Kotlin으로 작성했을 때 더 간단하고 우아합니다.


package com.easy.kotlin

fun main(args: Array<String>) {
 println(strLength(null))
 println(strLength("abc"))
}

fun strLength(s: String?): Int {
 return s?.length ?: 0
}
로그인 후 복사

그 중에서 Optional<String>의 의미도 표현하는 String?을 사용합니다. 더 간단하게?

한 눈에 명확합니다.

Java 8 Optional에서 제공하는 orElse


s.orElse("").length();
로그인 후 복사

도 있습니다. 이것은 Kotlin에서 가장 일반적인 Elvis 연산자입니다.


s?.length ?: 0
로그인 후 복사

에 비해 계속 사용하는 이유는 무엇입니까? Java 8의 Optional에 대해?

Kotlin의 별 기호


??????????????????????????????????????
?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: ?: 
?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?. ?.
로그인 후 복사

위 내용은 Java8의 Optional 사용과 Kotlin의 nullable 유형 사용에 대한 비교 세부정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿