相关疑难解决方法(0)

喜欢构成而不是继承?

为什么喜欢构图而不是继承呢?每种方法都有哪些权衡取舍?什么时候应该选择继承而不是作文?

language-agnostic oop inheritance composition aggregation

1538
推荐指数
23
解决办法
29万
查看次数

为什么Kotlin修饰符'open'与'data'不兼容?

我上课了

open data class Person(var name: String)
Run Code Online (Sandbox Code Playgroud)

和另一堂课

data class Student(var reg: String) : Person("")
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误

错误:修饰符'open'与'data'不兼容

如果我从Person类中删除数据的罚款.

为什么kotlin打开和数据不兼容?

inheritance class kotlin

7
推荐指数
2
解决办法
1108
查看次数

房间多个表相同对象(多语言数据库)

我正在开发一个android项目,必须在本地数据库(Room)中存储一些数据.我必须提供的功能之一是以不同语言将数据存储在本地数据库中,例如,如果我有食物信息,则此信息必须以英语,德语,法语等存储.

我的数据库的结构是这样的:

@Entity(tableName = "food")
public class Food{

}

@Entity(tableName = "food_fr")
public class FoodFr{

}

@Entity(tableName = "food_de")
public class FoodDe{

}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何让这三个不同的表(在不同的语言中)具有相同的列,并且@Dao对象为所有这些表返回一个公共(父)对象?

我不确定这是否可行,但如果某人有解决方案,请帮助.

提前致谢 :)

android android-room

7
推荐指数
1
解决办法
7185
查看次数

使用主构造函数继承类

我有一个父类如下,

interface ITask { }

open class Task(val targetServer: Server) : ITask { }
Run Code Online (Sandbox Code Playgroud)

然后有一个孩子继承它并覆盖主要构造函数,如下所示,

data class FileTask(val sourceServer: Server, targetServer: Server) : Task(targetServer = targetServer) {

}
Run Code Online (Sandbox Code Playgroud)

这在eclipse中引发了编译错误

数据类主构造函数必须只有property(val/var)参数

data从类标题中删除 关键字将导致错误,但我不明白为什么.

保留data关键字并添加vartargetServer 另一个错误

'targetServer'隐藏超类'Task'的成员,需要'override'修饰符

添加overridetargetServeroverride var targetServer: Server抛出另一个错误

"任务"中的"targetServer"是最终版,无法覆盖

我需要一些帮助才能理解这些错误.

java kotlin

5
推荐指数
1
解决办法
2966
查看次数

Kotlin - 数据类可以继承

我需要从数据类 B 继承数据类 A。我知道这在Kotlin 中是不可行的。

问题1:
为什么这不可行?

问题2:有
什么办法可以解决这个问题?

例子:

data class A(val data1 : String)
data class B(val data2 : String) : A()
Run Code Online (Sandbox Code Playgroud)

我如何在 Kotlin 中实现这一目标?

android kotlin

3
推荐指数
1
解决办法
5842
查看次数

kotlin 中的数据类继承?

我在 Java 中有 2 个模型类,其中一个扩展了另一个

@UseStag
public class GenericMessages extends NavigationLocalizationMap implements Serializable {
@SerializedName("loginCtaText")
@Expose
String loginCtaText;
@SerializedName("forgotPasswordCtaText")
@Expose
String forgotPasswordCtaText;

public String getLoginCtaText() {
    return loginCtaText;
}

public String getForgotPasswordCtaText() {
    return forgotPasswordCtaText;
}
}
Run Code Online (Sandbox Code Playgroud)

NavigationLocalizationMap 类

public class NavigationLocalizationMap implements Serializable {

@SerializedName("localizationMap")
@Expose
public HashMap<String, LocalizationResult> localizationMap;

@SerializedName("geoTargetedPageIds")
@Expose
public HashMap<String, String> geoTargetedPageIdsMap;

@SerializedName("pageId")
@Expose
public String pageId;

public HashMap<String, LocalizationResult> getLocalizationMap() {
    return localizationMap;
}

public void setLocalizationMap(HashMap<String, LocalizationResult> localizationMap) {
    this.localizationMap = localizationMap;
} …
Run Code Online (Sandbox Code Playgroud)

inheritance kotlin data-class

2
推荐指数
1
解决办法
8493
查看次数

Kotlin中数据类的继承

我知道Kotlin从数据类继承有一些限制.在进行这次讨论时,我学到了更多.

因为Kotlin中的数据类与Java中的POJO类似.我们是否应该不遵循Java POJO类中的继承?总结一下,是不是因为Kotlin的限制我们不允许从数据类继承,或者如果你这样做,设计中存在缺陷.

把它分解成一个更简单的问题.从Java中的POJO类继承是错误的吗?

inheritance pojo kotlin data-class

0
推荐指数
2
解决办法
2675
查看次数

(Kotlin) 将参数从数据类构造函数传递到超级构造函数?

我有一个抽象类:
abstract class SuperClass(private val privateVal: Int)

我有一个data class扩展抽象类。( DataClass)

如何privateValDataClass构造函数中将其作为参数并将其传递给SuperClass构造函数?

以下将不起作用,因为数据类构造函数中只允许使用vals 和vars:
data class DataClass(privateVal: Int) : SuperClass(privateVar)

inheritance constructor superclass kotlin data-class

0
推荐指数
1
解决办法
2909
查看次数

Kotlin 数据类继承强制转换为父级 equal 是错误的

我想知道为什么 equal 方法 (==) 不能按预期工作。

有什么办法可以修复下面代码中的注释部分吗?

正如您所看到的,p1 和 p2 不相等,既不是参考也不是值。那么为什么 p1 == p2 为真?!

object Main {
    @JvmStatic
    fun main(args: Array<String>) {

        val f1 = Foo(1)
        Thread.sleep(3) // to set a different value in parent of f2
        val f2 = Foo(1)

        val p1 = (f1 as Parent)
        val p2 = (f2 as Parent)

        println(p1 == p2) // true
        println(p1.b == p2.b) // false
    }
}

data class Foo(val a: Int) : Parent("$a-${System.currentTimeMillis()}")

sealed class Parent(val b: String) {

    override fun …
Run Code Online (Sandbox Code Playgroud)

kotlin

0
推荐指数
1
解决办法
1068
查看次数