【问题标题】:How to create objects of a class in kotlin and pass values to it similar to java如何在 kotlin 中创建类的对象并将值传递给它,类似于 java
【发布时间】:2019-05-18 19:05:38
【问题描述】:

kotlin中的等效代码是什么

我正在努力学习

  • 如何声明类的对象
  • 如何将值传递给新对象

TestClass.java

public class TestClass {


    public TestClass(String hi) {
        Log.d("check","Constructor invocation"+hi);
    }

    public void initiate() {
        Log.d("check","Function invocation");

    }

}

RunningClass.java

public class RunningClass {

    public RunningClass() {

        TestClass mObj = new TestClass("HI");
        mObj.initiate();
    }
}

RunningClass.javaTestClass.java在kotlin中的等效代码是什么

【问题讨论】:

  • 当您在 IntelliJ 中使用“将 Java 代码转换为 Kotlin”命令时,您得到了什么?
  • 请不要像在任何基本的 kotlin 教程中回答的那样基本问题。请查看一些教程。
  • 为什么不从官方的 kotlin 文档开始呢?甚至在kotl.in 页面上直接有“面向对象的你好”,它基本上解决了整个问题。

标签: android kotlin


【解决方案1】:

TestClass.kt

class TestClass(hi: String) {


        init {
            Log.d("check", "Constructor invocation$hi")
        }

        fun initiate() {
            Log.d("check", "Function invocation")

        }

    }

RunningClass.kt

class RunningClass {
        init {

            val mObj = TestClass("HI")
            mObj.initiate()
        }
    }

如果要将文件的一部分从 Java 转换为 Kotlin,最简单的方法是从 IDE 中的 Java 文件中复制代码并将其粘贴到 Kotlin 文件中。

【讨论】:

    【解决方案2】:

    试试这个

    class TestClass(hi: String) {
    
        val firstProperty = "First property: $hi".also(::println)
    
        fun initiate() {
            Log.d("check", "Function invocation")
    
        }
    }
    

    RunningClass.kt

    class RunningClass {
    
        constructor () {
            val mObj = TestClass("HI")
            mObj.initiate()
        }
    }
    

    更多信息请阅读

    【讨论】:

    • 恕我直言,这不是对初学者非常友好的答案,因为您使用 also,您没有提及 init 块,您声明 firstProperty 这不是原始 java 代码的一部分并且您声明只打印它,这基本上没用。另外,在RunningClass 中,我想没有人像这样声明无参数构造函数,当您可以使用在声明类时自动声明的主构造函数以及 init 块时。 @Mittal Varsani 提出的答案在使用代码约定方面要准确得多,并且对 Kotlin 友好。
    【解决方案3】:

    类创建对象

    class MyClass1 {
    companion object Named { }
    }
    
    val x = MyClass1  <----object
    

    从类参数传递数据

    class User(var name: String, var age: Int)
    

    【讨论】:

      【解决方案4】:

      Kotlin reference 包含您需要了解的所有内容1。从那里到Kotlin tutorials 仅一步之遥。

      我只能建议先通过参考。有很多有趣的概念可以帮助您编写更简洁的代码,但您至少需要了解它们。

      您可能总是想在有疑问时查阅参考资料,并且可以使用Kotlin Koans online 来熟悉一些概念。

      因此,对于您提出的问题,您将从参考开始,可能很快(或稍后;-))从那里跳到“类和对象”到“类和继承”,然后到达constructors 和会很容易发现自己的答案是:

      class TestClass(hi: String) {
        init {
          Log.d("check", "Constructor invocation$hi")
        }
        fun initiate() {
          Log.d("check", "Function invocation")
        }
      }
      

      和:

      class RunningClass {
        init {
          val mObj = TestClass("HI")
          mObj.initiate()
        }
      }
      

      1 如果不是,那么您可能正在处理更高级的东西...(KEEP 可能会或可能不会有趣...)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-20
        相关资源
        最近更新 更多