JAVA"插入Dimensions以完成Expression/ReferenceType"

mee*_*lid 8 java generics

我是Java的新手.

我从我的BFS代码中提供了一个简短的片段.

public int bfs(Person p, Person q) {
    private HashMap<Person, boolean> marked;
    private int count;

    marked = new marked<Person, boolean>();
    count = new int;
}
Run Code Online (Sandbox Code Playgroud)

根据Eclipse,我在最后4行中都有错误.

语法错误:插入"Dimensions"以完成表达式/ referencetype.

我很感激任何意见/建议!

Sat*_*rma 16

此错误的原因 - 您正在尝试将原始对象传递给泛型类型声明,而泛型类型总是期望一个Wrapper类对象.如上所述,在代码中使用'Boolean'而不是'boolean'.

  • 泛型类型由 &lt;&gt;(尖括号)分隔,可以是任何类类型、任何接口类型、任何数组类型或其他类型变量。只要泛型类型是非原始类型,就可以使用。如果您想了解更多信息,官方文档是[这里](https://docs.oracle.com/javase/tutorial/java/generics/types.html) (2认同)

小智 6

您需要使用包装器对象而不是基元.使用布尔值而不是布尔值.


MC *_*ror 5

Satyendra Sharma 的答案是绝对正确的,但这里有一些关于错误消息到底是什么意思的推理。

该错误是由于使用原始类型引起的,该类型不能用作泛型类型参数。例如,List<boolean>是错误的,而List<Boolean>是正确的。包装类可用于包装原始值并生成可与泛型一起使用的引用类型。

插入尺寸?什么?

消息“插入尺寸以完成表达式/引用类型”可能是因为为了使表达式变得有效,这里唯一有效的标记是一组方括号。

例如,

HashMap<Person, boolean[]> marked;
Run Code Online (Sandbox Code Playgroud)

就会编译得很好。这是因为,与 a 不同booleanaboolean[]是一个对象