من Java إلى Kotlin - ورقة الغش الخاصة بك لـ Java إلى Kotlin
مرحبًا، أنا أميت شيخار، المؤسس المشارك @ Outcome School • 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)}
java
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.
فقط قم بتقديم طلب سحب. أنت في!