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

错误:类型推断失败

益麻雀
2023-03-14

我正在尝试编写一个android静态编程语言应用程序,但我得到了以下错误。我哪里出错了?

这是我如何声明我的HashMap:

 var mParent: MutableMap<*, *> ?= null
 mParent = HashMap()

错误:

类型推断失败。没有足够的信息来推断构造函数HashMap中的参数K。请明确说明

共有3个答案

郗阳德
2023-03-14

如果您不确定键和值将是什么,请使用Any

var mParent: MutableMap<Any, Any> ?= mutableMapOf()

在你的例子中,编译器不确定这些aestriks是什么意思。

郦良才
2023-03-14

你可以在kotlin中使用这样的HashMap。。。。

val context = HashMap<String, Any>()
context.put("world", "John")
context.put("count", 1)
context.put("tf", true)
宋洲
2023-03-14

必须指定键的类型和映射的值。类似这样:

mParent = HashMap<String, String>()

或者像这样:

var mParent: MutableMap<String, String>? = null
mParent = HashMap()

将*作为泛型参数意味着允许任何类型的对象作为键和值。因此,当您创建HashMap时,编译器不知道键和值的确切类型——它无法推断类型。这就是为什么你会犯这样的错误。

建议:Kotlin成语建议使用mapOf()mutableMapOf()方法来创建映射,而不是使用Java风格的HashMap()

mParent = mutableMapOf<String, String>()
 类似资料:
  • 作为一个学习项目,我正在编写一个通过TCP的聊天服务器。我今天一直在修补ws crate,但我遇到了一个问题。这是我编写的代码,修改了他们的服务器示例。 当我尝试编译它时,我得到一个错误: 为什么会这样?我怎样才能解决这个问题?

  • 我试图在我的Observable上实现retryWhen,但我在IDE Android Studio 3.0中有一些奇怪的错误 以下是代码: IDE在红色下划线上突出显示。平面图运算符并说: 类型推断失败:信息不足,无法推断中的参数R 有趣的平面图(映射器:((t:可抛出)→可观察源)!):可观察!请明确指定。 对于“if”操作符也是如此: 控制流表达式的类型推断失败。请显式指定其类型 接线员。只

  • 以下代码可以用javac和Eclipse 4.6.1/4.6编译,但在Eclipse 4.6.2中会产生一个错误: Eclipse 4.6.2 在 下抱怨存在类型不匹配:无法从 int 转换为可比较 我认为的参数应该是

  • 主要内容:1 Java8 类型推断的介绍,2 Java8 类型推断的案例1,3 Java8 类型推断的案例21 Java8 类型推断的介绍 类型推断是Java的一项功能,它使编译器可以查看每个方法调用和相应的声明以确定参数的类型。 Java在Java 8中提供了类型推断的改进版本。 1.1 Java8以前 在下面的声明中,我们在一侧提到了arraylist的类型。这种方法是在Java 7中引入的。在这里,您可以将第二面留为<>,并且编译器将通过引用变量的类型来推断其类型。 1.2 Java8以后

  • TypeScript 类型检查机制包含三个部分: 类型推断 类型保护 类型兼容性 本节介绍其中的类型推断,类型推断主要用于那些没有明确指出类型的地方帮助确定和提供类型,这是 TypeScript 的一种能力。 类型推断是有方向的,要注意区分从左向右和从右向左两种推断的不同应用。 1. 慕课解释 类型推断的含义是不需要指定变量类型或函数的返回值类型,TypeScript 可以根据一些简单的规则推断其