from java to kotlin
1.0.0
Java에서 Kotlin으로 - Java에서 Kotlin으로에 대한 치트 시트
안녕하세요. 저는 Outcome School의 공동 창립자인 Amit Shekhar입니다. • IIT 2010-14 • 저는 많은 개발자를 가르치고 멘토링했으며 그들의 노력으로 그들에게 고임금 기술 일자리를 제공하고 많은 기술 회사가 고유한 문제를 해결하는 데 도움을 주었으며 많은 오픈 소스 라이브러리가 최고의 기업에서 사용되고 있습니다. 저는 오픈 소스, 블로그, 비디오를 통해 지식을 공유하는 데 열정을 갖고 있습니다.
다음 주소로 저와 연락하실 수 있습니다:
자바
System . out . print ( "Amit Shekhar" );
System . out . println ( "Amit Shekhar" );
코틀린
print ( " Amit Shekhar " )
println ( " Amit Shekhar " )
자바
String name = "Amit Shekhar" ;
final String name = "Amit Shekhar" ;
코틀린
var name = " Amit Shekhar "
val name = " Amit Shekhar "
자바
String otherName ;
otherName = null ;
코틀린
var otherName : String?
otherName = null
자바
if ( text != null ) {
int length = text . length ();
}
코틀린
text?. let {
val length = text.length
}
// or simply
val length = text?.length
자바
String sampleString = "Shekhar" ;
if (! sampleString . isEmpty ()) {
myTextView . setText ( sampleString );
}
if ( sampleString != null && ! sampleString . isEmpty ()){
myTextView . setText ( sampleString );
}
코틀린
var sampleString = " Shekhar "
if (sampleString.isNotEmpty()){ // the feature of kotlin extension function
myTextView.text = sampleString
}
if ( ! sampleString.isNullOrEmpty()){
myTextView.text = sampleString
}
자바
String firstName = "Amit" ;
String lastName = "Shekhar" ;
String message = "My name is: " + firstName + " " + lastName ;
코틀린
var firstName = " Amit "
var lastName = " Shekhar "
var message = " My name is: $firstName $lastName "
자바
String text = "First Line n " +
"Second Line n " +
"Third Line" ;
코틀린
val text = """
|First Line
|Second Line
|Third Line
""" .trimMargin()
자바
String str = "Java to Kotlin Guide" ;
String substr = "" ;
//print java
substr = str . substring ( 0 , 4 );
System . out . println ( "substring = " + substr );
//print kotlin
substr = str . substring ( 8 , 14 );
System . out . println ( "substring = " + substr );
코틀린
var str = " Java to Kotlin Guide "
var substr = " "
// print java
substr = str.substring( 0 .. 3 ) //
println ( " substring $substr " )
// print kotlin
substr = str.substring( 8 .. 13 )
println ( " substring $substr " )
자바
String text = x > 5 ? "x > 5" : "x <= 5" ;
String message = null ;
log ( message != null ? message : "" );
코틀린
val text = if (x > 5 ) " x > 5 " else " x <= 5 "
val message : String? = null
log(message ? : " " )
자바
final int andResult = a & b ;
final int orResult = a | b ;
final int xorResult = a ^ b ;
final int rightShift = a >> 2 ;
final int leftShift = a << 2 ;
final int unsignedRightShift = a >>> 2 ;
코틀린
val andResult = a and b
val orResult = a or b
val xorResult = a xor b
val rightShift = a shr 2
val leftShift = a shl 2
val unsignedRightShift = a ushr 2
자바
if ( object instanceof Car ) {
Car car = ( Car ) object ;
}
코틀린
if ( object is Car) {
var car = object as Car
}
// if object is null
var car = object as ? Car // var car = object as Car?
자바
if ( object instanceof Car ) {
Car car = ( Car ) object ;
}
코틀린
if ( object is Car) {
var car = object // smart casting
}
// if object is null
if ( object is Car?) {
var car = object // smart casting, car will be null
}
자바
if ( score >= 0 && score <= 300 ) { }
코틀린
if (score in 0 .. 300 ) { }
자바
int score = // some score;
String grade ;
switch ( score ) {
case 10 :
case 9 :
grade = "Excellent" ;
break ;
case 8 :
case 7 :
case 6 :
grade = "Good" ;
break ;
case 5 :
case 4 :
grade = "OK" ;
break ;
case 3 :
case 2 :
case 1 :
grade = "Fail" ;
break ;
default :
grade = "Fail" ;
}
코틀린
var score = // some score
var grade = when (score) {
9 , 10 -> " Excellent "
in 6 .. 8 -> " Good "
4 , 5 -> " OK "
else -> " Fail "
}
자바
for ( int i = 1 ; i <= 10 ; i ++) { }
for ( int i = 1 ; i < 10 ; i ++) { }
for ( int i = 10 ; i >= 0 ; i --) { }
for ( int i = 1 ; i <= 10 ; i += 2 ) { }
for ( int i = 10 ; i >= 0 ; i -= 2 ) { }
for ( String item : collection ) { }
for ( Map . Entry < String , String > entry : map . entrySet ()) { }
코틀린
for (i in 1 .. 10 ) { }
for (i in 1 until 10 ) { }
for (i in 10 downTo 0 ) { }
for (i in 1 .. 10 step 2 ) { }
for (i in 10 downTo 0 step 2 ) { }
for (item in collection) { }
for ((key, value) in map) { }
자바
final List < Integer > listOfNumber = Arrays . asList ( 1 , 2 , 3 , 4 );
final Map < Integer , String > keyValue = new HashMap < Integer , String >();
map . put ( 1 , "Amit" );
map . put ( 2 , "Anand" );
map . put ( 3 , "Messi" );
// Java 9
final List < Integer > listOfNumber = List . of ( 1 , 2 , 3 , 4 );
final Map < Integer , String > keyValue = Map . of ( 1 , "Amit" ,
2 , "Anand" ,
3 , "Messi" );
코틀린
val listOfNumber = listOf ( 1 , 2 , 3 , 4 )
val keyValue = mapOf ( 1 to " Amit " ,
2 to " Anand " ,
3 to " Messi " )
자바
// Java 7 and below
for ( Car car : cars ) {
System . out . println ( car . speed );
}
// Java 8+
cars . forEach ( car -> System . out . println ( car . speed ));
// Java 7 and below
for ( Car car : cars ) {
if ( car . speed > 100 ) {
System . out . println ( car . speed );
}
}
// Java 8+
cars . stream (). filter ( car -> car . speed > 100 ). forEach ( car -> System . out . println ( car . speed ));
cars . parallelStream (). filter ( car -> car . speed > 100 ). forEach ( car -> System . out . println ( car . speed ));
코틀린
cars.forEach {
println (it.speed)
}
cars.filter { it.speed > 100 }
.forEach { println (it.speed)}
// kotlin 1.1+
cars.stream().filter { it.speed > 100 }.forEach { println (it.speed)}
cars.parallelStream().filter { it.speed > 100 }.forEach { println (it.speed)}
자바
String [] splits = "param=car" . split ( "=" );
String param = splits [ 0 ];
String value = splits [ 1 ];
코틀린
val (param, value) = " param=car " .split( " = " )
자바
void doSomething () {
// logic here
}
코틀린
fun doSomething () {
// logic here
}
자바
double calculateCost ( int quantity , double pricePerItem ) {
return pricePerItem * quantity ;
}
double calculateCost ( int quantity ) {
// default price is 20.5
return 20.5 * quantity ;
}
코틀린
fun calculateCost ( quantity : Int , pricePerItem : Double = 20.5) = quantity * pricePerItem
calculateCost( 10 , 25.0 ) // 250
calculateCost( 10 ) // 205
자바
void doSomething ( int ... numbers ) {
// logic here
}
코틀린
fun doSomething ( vararg numbers : Int ) {
// logic here
}
자바
int getScore () {
// logic here
return score ;
}
코틀린
fun getScore (): Int {
// logic here
return score
}
// as a single-expression function
fun getScore (): Int = score
// even simpler (type will be determined automatically)
fun getScore () = score // return-type is Int
자바
int getScore ( int value ) {
// logic here
return 2 * value ;
}
코틀린
fun getScore ( value : Int ): Int {
// logic here
return 2 * value
}
// as a single-expression function
fun getScore ( value : Int ): Int = 2 * value
// even simpler (type will be determined automatically)
fun getScore ( value : Int ) = 2 * value // return-type is int
자바
public class Utils {
private Utils () {
// This utility class is not publicly instantiable
}
public static int getScore ( int value ) {
return 2 * value ;
}
}
코틀린
class Utils private constructor() {
companion object {
fun getScore ( value : Int ): Int {
return 2 * value
}
}
}
// another way
object Utils {
fun getScore ( value : Int ): Int {
return 2 * value
}
}
자바
public class Developer {
private String name ;
private int age ;
public Developer ( String name , int age ) {
this . name = name ;
this . age = age ;
}
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public int getAge () {
return age ;
}
public void setAge ( int age ) {
this . age = age ;
}
@ Override
public boolean equals ( Object o ) {
if ( this == o ) return true ;
if ( o == null || getClass () != o . getClass ()) return false ;
Developer developer = ( Developer ) o ;
if ( age != developer . age ) return false ;
return name != null ? name . equals ( developer . name ) : developer . name == null ;
}
@ Override
public int hashCode () {
int result = name != null ? name . hashCode () : 0 ;
result = 31 * result + age ;
return result ;
}
@ Override
public String toString () {
return "Developer{" +
"name='" + name + ''' +
", age=" + age +
'}' ;
}
}
코틀린
data class Developer ( var name : String , var age : Int )
자바
public class Developer implements Cloneable {
private String name ;
private int age ;
public Developer ( String name , int age ) {
this . name = name ;
this . age = age ;
}
@ Override
protected Object clone () throws CloneNotSupportedException {
return ( Developer ) super . clone ();
}
}
// cloning or copying
Developer dev = new Developer ( "Messi" , 30 );
try {
Developer dev2 = ( Developer ) dev . clone ();
} catch ( CloneNotSupportedException e ) {
// handle exception
}
코틀린
data class Developer ( var name : String , var age : Int )
// cloning or copying
val dev = Developer ( " Messi " , 30 )
val dev2 = dev.copy()
// in case you only want to copy selected properties
val dev2 = dev.copy(age = 25 )
자바
// Example #1
interface SomeInterface < T > {
void doSomething ( T data );
}
class SomeClass implements SomeInterface < String > {
@ Override
public void doSomething ( String data ) {
// some logic
}
}
// Example #2
interface SomeInterface < T extends Collection <?>> {
void doSomething ( T data );
}
class SomeClass implements SomeInterface < List < String >> {
@ Override
public void doSomething ( List < String > data ) {
// some logic
}
}
코틀린
interface SomeInterface < T > {
fun doSomething ( data : T )
}
class SomeClass : SomeInterface < String > {
override fun doSomething ( data : String ) {
// some logic
}
}
interface SomeInterface < T : Collection < * >> {
fun doSomething ( data : T )
}
class SomeClass : SomeInterface < List < String >> {
override fun doSomething ( data : List < String >) {
// some logic
}
}
자바
public class Utils {
private Utils () {
// This utility class is not publicly instantiable
}
public static int triple ( int value ) {
return 3 * value ;
}
}
int result = Utils . triple ( 3 );
코틀린
fun Int. triple (): Int {
return this * 3
}
var result = 3 .triple()
자바
Person person ;
코틀린
internal lateinit var person : Person
자바
public enum Direction {
NORTH ( 1 ),
SOUTH ( 2 ),
WEST ( 3 ),
EAST ( 4 );
int direction ;
Direction ( int direction ) {
this . direction = direction ;
}
public int getDirection () {
return direction ;
}
}
코틀린
enum class Direction ( val direction : Int ) {
NORTH ( 1 ),
SOUTH ( 2 ),
WEST ( 3 ),
EAST ( 4 );
}
자바
List < Profile > profiles = loadProfiles ( context );
Collections . sort ( profiles , new Comparator < Profile >() {
@ Override
public int compare ( Profile profile1 , Profile profile2 ) {
if ( profile1 . getAge () > profile2 . getAge ()) return 1 ;
if ( profile1 . getAge () < profile2 . getAge ()) return - 1 ;
return 0 ;
}
});
코틀린
val profile = loadProfiles(context)
profile.sortedWith( Comparator ({ profile1, profile2 ->
if (profile1.age > profile2.age) return @Comparator 1
if (profile1.age < profile2.age) return @Comparator - 1
return @Comparator 0
}))
자바
AsyncTask < Void , Void , Profile > task = new AsyncTask < Void , Void , Profile >() {
@ Override
protected Profile doInBackground ( Void ... voids ) {
// fetch profile from API or DB
return null ;
}
@ Override
protected void onPreExecute () {
super . onPreExecute ();
// do something
}
};
코틀린
val task = object : AsyncTask < Void , Void , Profile >() {
override fun doInBackground ( vararg voids : Void ): Profile ? {
// fetch profile from API or DB
return null
}
override fun onPreExecute () {
super .onPreExecute()
// do something
}
}
자바
public class User {
{ //Initialization block
System . out . println ( "Init block" );
}
}
코틀린
class User {
init { // Initialization block
println ( " Init block " )
}
}
Copyright (C) 2024 Amit Shekhar
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
끌어오기 요청을 하시면 됩니다. 당신은 안에 있습니다!