but this stone is reasonably soft, and with some effort we can reshape it later. Kotlin Design Team 1SJODJQMFTPGQSBHNBUJDFWPMVUJPOIUUQTLPUMJOMBOHPSHEPDTLPUMJOFWPMVUJPOQSJODJQMFTIUNM Kotlin is a pragmatic programming language … and is focused on interoperability, safety, clarity, and tooling support. Andrey Breslav, Lead Language Designer IUUQTCMPHKFUCSBJOTDPNLPUMJOLPUMJOSFMFBTFEQSBHNBUJDMBOHVBHFGPSKWNBOEBOESPJE 1SBHNBUJD 0QFOUPDPNNVOJUZGFFECBDL JTTVFT CVHT QSPQPTBMT
name; Integer age; String address; String email; String phoneNumber; } final Person person = new Person( "1", “James Gosling", null, “Canada", null, null ); +BWB class Person ( val id: String, val name: String, val age: Int?, val address: String, val email: String?, val phoneNumber: String?, ) val person = Person( id = "2", name = "Andrey Breslav", age = null, address = "Tokyo", email = null, phoneNumber = null ) ,PUMJO
name; Integer age; String address; String email; String phoneNumber; } final Person person = new Person( "1", “James Gosling", null, “Canada", null, null ); +BWB class Person ( val id: String, val name: String, val age: Int?, val address: String, val email: String?, val phoneNumber: String?, ) val person = Person( id = "2", name = "Andrey Breslav", age = null, address = “Russia", email = null, phoneNumber = null ) ,PUMJO 3FEVDFDPHOJUJWFMPBEJNQMFNFOUBUJPOFSSPST PSNJTUBLFT
3FBEBCJMJUZ 4FNBOUJDT // not using extension fun convertToCalendarFormat(date: LocalDate): String { val f = DateTimeFormatter.ofPattern("yyyy/MM/dd") return date.format(f) } // Using extension fun LocalDate.toCalendarFormat(): String { val f = DateTimeFormatter.ofPattern("yyyy/MM/dd") return this.format(f) } // GOOD LocalDate.now().toCalendarFormat() // NOT GOOD convertToCalendarFormat(LocalDate.now())
FH0QFO"1* 1SPUPCVG 0VUDPNF 3FBEBCJMJUZ 4FNBOUJDT 4FQBSBUJPOPG$PODFSOT EPNBJOMBZFS㲗SFQPTJUPSZMBZFS /** It’s a generated class, do not edit it manually. **/ class PersistUserRequest ( var userId: String? = null, var username: String? = null, ) class GetUserResponse ( var userId: String? = null, var username: String? = null, ) fun PersistUserRequest.toUser(): User { return User( id = requireNotNull(this.userId), name = requireNotNull(this.username), ) } fun User.toResponse(): GetUserResponse { return GetUserResponse( userId = requireNotNull(this.id), username = requireNotNull(this.name), ) } val requestUser: User = requestDTO.toUser() val response = user.toResponse()
findNameById(Integer id) { final User user = users.get(id); if (user != null) { return user.getName(); } return null; } final String name = findNameById(1).toUpperCase(); +BWB 55PSOVMM ,PUMJO 55 5 5PSOVMM
name = findNameById(2)?.uppercase() $PNQBSFEUP+BWB ,PUMJOʜ /POFFEGPS"OOPUBUJPOT /POFFEGPSOptional 4BGFDBMMTTJNQMJGZOVMMIBOEMJOH public static Optional<String> findNameById(@NonNull Integer id) { final User user = users.get(id); if (user != null) { return Optional.of(user.getName()); } return Optional.empty(); } final String name = findNameById(1).map(String::toUpperCase).orElse(null);