首页 > 解决方案 > 如何在 Android Studio 中将 Kotlin 类属性打印到 Logcat?

问题描述

我正在编写一个简单的程序来描述我最喜欢的歌曲的属性,即:artistName、songTitle、releaseDate 等。我创建了一个“FavoriteSong”类并添加了一些属性来表示这些属性。当我运行代码时,我希望将类属性打印到 Logcat。我怎样才能做到这一点?

package com.example.song

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import java.time.LocalDate
import java.time.Month

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Favorite Song
        class FavoriteSong {
            val artistName: String = "Wale" 
            val songTitle: String = "My World" 
            val releaseDate = LocalDate.of(2020, Month.JANUARY, 1)
            val songDuration: Float = 3.50f 
            val genre: String = "Reggae" 
        }
        
        // Why won't this Log.d() statement work?
        Log.d(FavoriteSong)
    }
}

标签: android-studiokotlin

解决方案


我不再精通 Android(更具体地说,我不记得Log.d()'s 的签名),但我在这里看到了几个潜在的问题:

  • FavoriteSong是一个类,而不是一个对象。您需要通过调用构造函数来创建它的实例:(FavoriteSong()注意类名后面的括号)
  • 如果Log.d()需要一个字符串,您可能需要调用.toString()您的FavoriteSong实例。如果它接受Any,你应该没问题,因为它很可能会toString()在后台调用
  • 您当前的定义FavoriteSong不会覆盖AnytoString()方法。您需要override fun toString(): String = ...自己声明一个,或者使这个类 adata class以便它自动为您生成一个

推荐阅读