1) str이 null일 경우 Exception을 낸다.
public boolean startsWithA1(String str) {
if(str == null) {
throw new IllegalArgumentException("null이 들어왔습니다");
}
return str.startsWith("A");
}
2) str이 null일 경우 null을 반환
public Boolean startsWithA2(String str) {
if(str == null) {
return null;
}
return str.startsWith("A");
}
3) str이 null일 경우 false을 반환
public boolean startsWithA4(String str) {
if(str == null) {
return false;
}
return str.startsWith("A");
}
fun main() {
val str: String? = null
println(str?.length)
}
fun startsWithA1(str: String?): Boolean {
//Elvis 연산자 사용 O
return str?.startsWith("A")
?: throw IlleIllegalArgumentException("null이 들어왔습니다")
//Elvis 연산자 사용 X
if(str == null) {
throw IllegalArgumentException("null이 들어왔습니다")
}
return str.startsWith("A")
}
fun startsWithA2(str: String?): Boolean? {
return str?.startsWith("A")
if(str == null) {
return null
}
return str.startsWith("A")
}
fun startsWithA3(str: String?): Boolean {
return str?.startsWith("A") ?: false
if(str == null) {
return false
}
return str.startsWith("A")
}
fun startsWith(str: String?): Boolean {
// 절대 null이 아닌 경우
return str!!.startsWith("A")
}
크래스 플랫폼
플랫폼 타입
public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
@Nullable
public String getName() {
return name;
}
}
fun main() {
val person = Person("공부하는 개발자")
startsWithA(person.name)
}
fun startWithA(str: String): Boolean {
//여기서 에러남
//@Nullable annotation을 읽어서 판단하기 때문
//지우면 에러 사라짐
return str.startsWith("A")
}