当前位置: 首页 > 知识库问答 >
问题:

重写类Kotlin中变量的get方法?

於和志
2023-03-14

我在Java中有一个模型类,我把它转换成了kotlin中的数据类

public class VideoAssets implements Serializable {

@SerializedName("type")
@Expose
String type;

@SerializedName("mpeg")
@Expose
List<Mpeg> mpeg = null;

@SerializedName("hls")
@Expose
String hls;

@SerializedName("widevine")
@Expose
WideVine wideVine;

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public List<Mpeg> getMpeg() {
    return mpeg;
}

public void setMpeg(List<Mpeg> mpeg) {
    this.mpeg = mpeg;
}

public String getHls() {
    hls = Macros.INSTANCE.replaceURl(hls);
    return hls;
}

public void setHls(String hls) {
    this.hls = hls;
}

public WideVine getWideVine() {
    return wideVine;
}

public void setWideVine(WideVine wideVine) {
    this.wideVine = wideVine;
}
}

正如您所看到的,我希望在检索变量hls时更改它的值。

data class VideoAssets(@SerializedName("mpeg") @Expose
                   var mpeg: List<Mpeg> = emptyList(),
                   @SerializedName("hls")
                   @Expose
                   var hls: String,
                   @SerializedName("widevine")
                   @Expose
                   val wideVine: WideVine? = null) : Serializable
class VideoAssets(@SerializedName("mpeg") @Expose
              var mpeg: List<Mpeg> = emptyList(),
              @SerializedName("hls")
              @Expose
              val hlsUrl: String? = null,
              @SerializedName("widevine")
              @Expose
              val wideVine: WideVine? = null) : Serializable {
val hls: String? = hlsUrl
    get() = field?.let { Macros.replaceURl(it) }

}

当服务器试图检索videoassets.gethls()时,它返回null,而它应该返回新值。对象videoassets.gethlsurl()具有值,但'videoassets.gethls()'始终为null。

有人能指出我缺少什么吗?

共有1个答案

路金鑫
2023-03-14

以下是您的代码:

val hls: String? = hlsUrl
    get() = field?.let { Macros.replaceURl(it) }

因此,它所做的是创建一个名为hls的属性,并为其提供一个名为field的支持字段(一个变量)。它最初将其设置为传递给构造函数的hlsurl的任何值(可能为null)。

getter代码接受字段的值,如果该值不为null,则调用replaceurl函数并返回结果,否则返回null。

这是关于属性的Kotlin页面,如果你还没有看到它!

 类似资料:
  • 问题内容: 我有一个index.php,它处理所有路由index.php?page = controller(简体)只是为了与视图分离逻辑。 我无法与Rewriterule一起使用。 控制器可能如下所示: 并且: 问题答案: 基本上人们想说的是,您可以像这样编写重写规则: 这将使您的实际php文件如下所示: 您的实际网址如下所示: 在您的PHP文件中,您可以通过如下分解方式来访问参数:

  • 所以我有一个类类型的列表。例如,我有一个教室和一个学生班。 我创建了一个学生列表:

  • 问题内容: 我有以下类别,将其用作项目中所有模型的基础: 然后,我尝试通过以下方式对其进行扩展: 但是,如果我尝试执行以下操作: 然后,而不是查询:,它生成查询:“从空WHERE id =?中选择SELECT ID”。因此,覆盖类中的字段似乎没有任何效果。 我该如何克服呢?如果我在BaseModel中添加了一个方法,并在的构造函数中对其进行了调用,那么该类的所有方法都可以使用的新值吗? 问题答案:

  • 假设一个抽象超类包含一个名为price of type double的私有变量。 现在假设变量已声明但未初始化。超类包含访问器方法,但是setter方法是抽象的,因此必须在子类中重写它,但是,由于超变量是私有的,有没有办法从子类初始化此变量? 考虑下面的例子:我有4节课;书籍(抽象超级)、非小说类(sub)、小说类(sub)、测试者(测试发生了什么的类)。 图书类: 小说课 非小说类 公共类非小说

  • 我正在Java学习重写成员函数,并考虑过尝试重写成员变量。 所以,我给类下了定义 输出为: 我不明白为什么当aRef设置为b时,intVal仍然是A类?

  • 因此,我试图用Kotlin开发一个Android应用程序,作为纸笔RPG伴侣。现在我想创造一个暴民阶层 在另一个活动中,我想显示以下信息: Android studio不断告诉我不能访问“名称”:尽管它在“Mob”中是私有的。我以为这就是我得到< code>get()的原因? 也许有更多静态编程语言经验的人可以帮忙。提前谢谢你。