gpt4 book ai didi

java - 如何将对象添加到未参数化的 Java 列表?

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:20 25 4
gpt4 key购买 nike

我有一个 Java 对象 OldFashioned扩展 Java 1.4 List :

[Java] 
class OldFashioned extends List { ... }

OldFashioned不接受任何类型参数。我需要添加 SomeObject给它。在 Java 中没有问题,因为它处理 List 1.4 作为 List<Object> 1.5 并允许添加 Object 的任何子类到集合。但是斯卡拉没有。所以下一个代码不起作用:

[Scala]
val oldFashioned = new OldFashioned()
oldFashioned.add(new SomeObject) // found: SomeObject; required: E

也就是说,Scala 编译器 需要将类型参数传递给 OldFashioned这实际上并没有带他们:

[Scala]
var oldFashioned: OldFashioned[SomeObject] = null // OldFashioned does not take type parameters

我怎样才能克服它并添加 SomeObjectOldFashined

最佳答案

好吧,我不敢相信我的 earlier question在这里找到一个用法(你应该去投票 agilesteel 的 answer )

def add(oldFashioned: OldFashioned, any: Any): Boolean = oldFashioned match {
case l: java.util.List[a] => l.add(any.asInstanceOf[a])
}

val oldFashioned = new OldFashioned
// oldFashioned: OldFashioned = []

add(oldFashioned, "test")
// res0: Boolean = true
add(oldFashioned, 1)
// res1: Boolean = true
add(oldFashioned, new Object)
// res2: Boolean = true

oldFashioned
// res3: OldFashioned = [test, 1, java.lang.Object@1db8f8e]

编辑:我猜只要我要投:

oldFashioned.asInstanceOf[java.util.List[SomeObject]].add(new SomeObject)

关于java - 如何将对象添加到未参数化的 Java 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com