Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีเทียบเท่ากับ Java static ใน Kotlin คืออะไร?


ใน Java มีการใช้คีย์เวิร์ด "static" เพื่อการจัดการหน่วยความจำอย่างมีประสิทธิภาพ เมื่อตัวแปรหรือเมธอดถูกประกาศเป็น คงที่ จากนั้น JVM จะจัดสรรหน่วยความจำสำหรับตัวแปรเหล่านี้เพียงครั้งเดียว โดยปกติแล้ว ตัวแปรสแตติกจะใช้เพื่อประกาศคุณสมบัติทั่วไปของ คลาส เช่น "ชื่อสถาบัน" ในตัวอย่างต่อไปนี้ เราจะมาดูวิธีการใช้ สแตติก คำสำคัญ

ตัวอย่าง Static ใน Java

เพื่อแสดงให้เห็นว่า คงที่ ทำงานใน Java เราจะเข้าถึงคอมไพเลอร์ Java ออนไลน์ของเรา และเราจะสร้าง การทดสอบ ระดับ. ข้างใน ทดสอบ เราจะพยายามสร้างตัวแปรสแตติกพร้อมกับ สแตติก เมธอด และเราจะเข้าถึงทั้งคู่โดยไม่ต้องสร้าง คลาส . ใดๆ วัตถุ

ตัวอย่าง

public class Test
{
   static int myStaticVariable = 10;
   // static method
   static void staticMethod()
   {
      System.out.println("www.tutorialspoint.com");
   }

   public static void main(String[] args)
   {

      // accessing static method and variable without creating
      // any object of class Test
      staticMethod();
      System.out.println("Accessing Static variable-"+myStaticVariable);
   }
}

ผลลัพธ์

เมื่อคุณรันโค้ด มันจะสร้างผลลัพธ์ต่อไปนี้ -

$javac Test.java
$java -Xmx128M -Xms16M Test
www.tutorialspoint.com
Accessing Static variable-10

เทียบเท่ากับ Java Static Methods ใน Kotlin

ใน Kotlin เราไม่มี คงที่ คำสำคัญ. ในบทความนี้ เราจะเรียนรู้วิธีที่เราสามารถจัดการหน่วยความจำแบบเดียวกันได้โดยใช้คำสำคัญที่แตกต่างกันในไลบรารี Kotlin วัตถุประสงค์คือการใช้ฟังก์ชันไลบรารี Kotlin ที่แตกต่างกันเพื่อเลือกเงื่อนไขที่หน่วยความจำจะถูกสร้างขึ้นเพียงครั้งเดียวและค่าของหน่วยความจำจะไม่สามารถแก้ไขได้จากส่วนอื่น ๆ ของแอปพลิเคชัน

มีสองวิธีในการใช้ คงที่ ใน Kotlin −

  • การใช้วัตถุที่แสดงร่วม

  • การใช้คลาสอ็อบเจ็กต์และคำอธิบายประกอบ @JvmStatic

มาทำความเข้าใจแต่ละวิธีอย่างละเอียดกัน

การใช้วัตถุที่แสดงร่วม

การเพิ่ม สหาย ในวัตถุจะช่วยให้นักพัฒนาบรรลุ คงที่ ฟังก์ชั่นใน Kotlin มันเก็บอ็อบเจ็กต์ไว้ในไฟล์เดียวกันกับที่เก็บคลาส ดังนั้นมันจึงสามารถเข้าถึงเมธอดและตัวแปรส่วนตัวทั้งหมดภายในคลาสได้ มันได้รับการเริ่มต้นพร้อมกับขั้นตอนการเริ่มต้นคลาส

ตัวอย่าง

เราจะพยายามปรับใช้อ็อบเจ็กต์ที่แสดงร่วม และเราจะเห็นว่าเราสามารถจัดการกับการจัดการหน่วยความจำใน Kotlin ได้อย่างมีประสิทธิภาพเพียงใด

fun main(args: Array<String>) {
   // Accessing class variable and method
   //with out creating class object
   println("Hello!"+'\n' + "This an example of accessing class variable without creating object." + MyClass.staticField+'\n')
   println("Hello!"+'\n' + "This an example of accessing class Method without creating an object." + MyClass.getStaticFunction()+'\n');

}

class MyClass{
   companion object {
      val staticField = "This is a Static Variable."
      fun getStaticFunction(): String {
         return "This is a static Method."
      }
   }
}

ผลลัพธ์

เมื่อคุณรันโค้ด มันจะสร้างผลลัพธ์ต่อไปนี้ -

Hello!
This an example of accessing class variable without creating
object. This is a Static Variable.

Hello!
This an example of accessing class Method without creating an
object. This is a static Method.

ในโค้ดตัวอย่างนี้ หากคุณพยายามแก้ไขค่าของ คงที่ . ใดๆ ตัวแปร คุณจะเห็นว่าคอมไพเลอร์ Kotlin จะเกิดข้อผิดพลาด

ตัวอย่าง

fun main(args: Array) {

   // Trying to modify the static variable

   MyClass.staticField="Hello Students";
   println("Hello!"+'\n'+"This an example of accessing class variable with out creating object-"+MyClass.staticField+'\n')

}
class MyClass{
   companion object {
      val staticField = "This is an Static Variable"
      fun getStaticFunction(): String {
         return "This is a static Method"
      }
   }
}

ผลลัพธ์

รหัสด้านบนจะสร้างข้อผิดพลาดต่อไปนี้ -

$kotlinc -nowarn main.kt -include-runtime -d main.jar
main.kt:5:5: error: val cannot be reassigned
MyClass.staticField="Hello Students";
^

การใช้คลาสอ็อบเจ็กต์และคำอธิบายประกอบ @JvmStatic

ตามเอกสาร Kotlin เมื่อ @JvmStatic มีการใช้คำอธิบายประกอบกับตัวแปรหรือวิธีการใดๆ ซึ่งจะทำงานเป็น คงที่ ฟังก์ชันของคลาสนั้นๆ

ตัวอย่าง

ในตัวอย่างต่อไปนี้ เราจะสร้าง วัตถุ คลาสและในวัตถุ .นั้น class เราจะประกาศตัวแปรและ method โดยใช้ @JvmStatic คำอธิบายประกอบเพื่อใช้งาน คงที่ การทำงานในสภาพแวดล้อม Kotlin

fun main(args: Array) {
   // Accessing class variable and method
   //with out creating class object
   println("Hello!"+'\n' + "This an example of accessing a class variable without creating an object." +MyClass.staticField+'\n')
   println("Hello!"+'\n' + "This an example of accessing a class Method without creating an object. " +MyClass.getStaticFunction()+'\n');

}
object MyClass{
   @JvmStatic
   val staticField = "This is a Static Variable."
   @JvmStatic
   fun getStaticFunction(): String {
      return "This is a Static Method."
   }
}

ผลลัพธ์

มันจะสร้างผลลัพธ์ต่อไปนี้ในส่วนผลลัพธ์ −

Hello!
This an example of accessing a class variable without creating an
object. This is a Static Variable.

Hello!
This an example of accessing a class Method without creating an
object. This is a Static Method.