data class MainPosts(val context: Context, val posts: Posts, val livePost: LivePosts?)
{
constructor() : this(null!!, null!!, null!!)
}
Run Code Online (Sandbox Code Playgroud)
嘿,我一直在试图弄清楚如何在Firebase的数据类上创建一个空的构造函数.
我尝试了上面的代码,但它没有正常工作.
我的应用程序中有一个带有许多属性的Kotlin类,我想构建的是一种将变量名存储在字典中的方法。字典看起来像这样:
HashMap<String, Pair<Any, Any>>()
Run Code Online (Sandbox Code Playgroud)
这样做的目的是存储对特定属性所做的更改,我将变量的名称存储为键,在对中存储旧值和新值。为了通知更改,我使用观察者模式。因此,每当从属性调用设置器时,都会通知更改并将其存储到字典中。
以下代码导致以下问题:
var person = Person("Harry", 44)
person.age = 45
Run Code Online (Sandbox Code Playgroud)
HashMap("age", (44, 45))
现在,我只是将变量名硬编码为字符串,所以我的问题是:
如何在Kotlin中动态获取变量名?
我在Java中看到了相同的问题:Java思考:如何获取变量的名称?
另外,关于同一主题的其他一些问题声称这是不可能的:获取变量的name属性
我可以理解,不可能获得变量的名称,因为简单的编译器没有该信息,但是我仍然急于查看其他人是否对此问题有任何解决方案。
在我将kotlin函数传递进去之后Bundle,onSaveInstanceState我得到了NotSerializableException:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = MyActivity$showFragmentA$1)
at android.os.Parcel.writeSerializable(Parcel.java:1447)
at android.os.Parcel.writeValue(Parcel.java:1395)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
at android.os.Bundle.writeToParcel(Bundle.java:1079)
at android.os.Parcel.writeBundle(Parcel.java:690)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3269)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3632)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
Caused by: java.io.NotSerializableException: MyActivity
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at android.os.Parcel.writeSerializable(Parcel.java:1442)
at android.os.Parcel.writeValue(Parcel.java:1395)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:665)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) …Run Code Online (Sandbox Code Playgroud) Java中的Closeable接口提供了一种方便的抽象,可以方便地管理可关闭的资源。在多平台 kotlin 的背景下,是否有一种模式、实践或功能可以帮助打破共享/多平台 Closeable 接口和实际的 Java Closeable 接口之间的差距,因为它们必然是两种不同的类型?
无法关闭类型差异和/或具有标准库可关闭的影响是 Closeable 接口的激增,即使它们本质上是相同的东西,也无法跨库组合。
我想在图像视图中像“ Peter Parker”一样用两个单词缩略的首字母缩略词,但是在运行代码时只能得到一个单词“ P”,而在我的代码空间之后如何获得第二个单词。
holder.imgName?.text=teamData[position].userImage.substring(0,1)
Run Code Online (Sandbox Code Playgroud) 假设我有一个函数fun myFunction(name:String, email:String){},当我调用此函数时,myFunction('Ali', 'ali@test.com')如何保存此调用并在以后使用它同样使用相同的参数调用?
我想要做的是使用可以是其他三种类型之一的泛型类型.
这是一个函数示例:
fun <T> get(key: String) : T where T: String, T: Number, T: Boolean {}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,那我该怎么做呢?
我在 Java 中有这个:
public class User {
String name;
String id;
int age;
public User(String name) {
this.name = name;
}
public User(String name, String id) {
this.name = name;
this.id = id;
}
public User(String id, int age) {
this.id = id;
this.age = age;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id …Run Code Online (Sandbox Code Playgroud) 我正在使用Jackson对Kotlin数据类进行反序列化.我正在使用jackson-kotlin-module但杰克逊给了我以下错误:
无法构造MyClass的实例:找不到合适的构造函数,不能从Object值反序列化
我已经尝试添加proguard规则来保存我的类,它的构造函数没有任何成功.
如果我添加一个规则来保留所有kotlin类,那么错误就会消失.
有任何想法吗?
我的 Kotlin 活动中有 lateinit 属性,这是它的简化版本:
class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)
save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}
Run Code Online (Sandbox Code Playgroud)
主要问题是当我生成移动应用程序并按“保存”按钮时,应用程序停止工作。Logcat 显示此错误:“lateinit 属性 questionAnswerListOfObjects 尚未初始化”
我尝试了很多方法来初始化它,但这些方法对我没有帮助。我应该如何正确初始化它?我想将这个类的许多对象添加到 ArrayList 中:
class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
Run Code Online (Sandbox Code Playgroud)