Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入维度以完成表达式/引用类型_Java_Generics_Expression_Reference Type - Fatal编程技术网

Java 插入维度以完成表达式/引用类型

Java 插入维度以完成表达式/引用类型,java,generics,expression,reference-type,Java,Generics,Expression,Reference Type,我是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; } public int-bfs(p人、q人){ 私有HashMap标记; 私

我是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;
}
public int-bfs(p人、q人){
私有HashMap标记;
私人整数计数;
标记=新标记();
计数=新整数;
}
根据Eclipse,最后4行中的每一行都有一个错误

语法错误:插入“维度”以完成表达式/引用类型


如有任何意见/建议,我将不胜感激

首先,我建议您开始阅读Java教程

针对您的具体问题:

对于代码,您可以在声明变量时正确初始化变量:

    Map<Person, Boolean> marked = new HashMap<Person, Boolean>();
    int count = 0; // or whatever initial value
Map marked=newhashmap();
整数计数=0;//或者任何初始值

这段代码似乎是在毫无理解的情况下随意乱扔关键词——我建议您学习Java教程。首先,泛型是装箱的主要用途之一
boolean
或任何其他原语(您可以通过以下事实来识别它们:它们的标识符是小写的,大多数IDE将突出显示它们)不能用作泛型类型,必须使用它们的大写等价物(一个简单的包装类)。在这里,使用
HashMap

我不确定什么是
marked=newmarked…
-显然,
marked
不是一种类型,不能在这种上下文中使用
new x(params)
初始化
x
类型的对象,传递其构造函数
params
new x(params)
是相同的,但是
x
的泛型类型是
泛型

最后,
newint
完全无效-请参见我上面的解释。原语是而不是对象,这意味着初始化它们没有意义,因此无效。另外,您希望这个表达式产生什么结果?类型为
int
,但您没有指定哪个
int
。正确的语法是文字:
count=x
其中
x
int
范围内的某个整数


作为旁注,您的方法名称不清楚,变量可能会在您声明它们的同一行中初始化,以简化代码。

您需要使用包装器对象,而不是原语。使用布尔值而不是布尔值。

导致此错误的原因-您试图将一个基元对象传递到泛型类型声明中,而泛型类型总是需要一个包装类对象。因此,请在代码中使用“Boolean”而不是“Boolean”,即caps中的“B”。

泛型是在编译时和运行时解析的,它们与代码中使用的泛型无关。对象不是类型强制转换到针对泛型类型提供的类类型中。在java中,原语和对象都是完全不相关的实体。在java中不可能将对象直接转换为基元类型。因此,不允许在泛型中使用基元类型,eclipse会发出此警告。

如果类型参数是无界的,则用其边界或对象替换泛型类型中的所有类型参数。因此,生成的字节码只包含普通类、接口和方法

类型参数
V
,实际上也是
K
,在
HashMap
中声明,擦除后将替换为
Object
,因为它们是无界的。虽然不能将基元类型存储为
对象

是绝对正确的,但下面是错误消息确切含义的一些推理

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

插入尺寸?什么? “Insert dimensions to complete expression/referenceType”消息可能是因为为了使表达式有效,这里唯一有效的标记是一组方括号

比如说,

HashMap标记;

我会很好的。这是因为,与布尔值不同,.

不会养成坏习惯。将来,不要把“JAVA”放在你的问题中的任何地方。出于某种原因,这是一个坏问题的趋势-不要让人们认为这是一个。只需使用“Java”或不使用它,考虑到Java标记,这显然是一个Java问题。您最好仔细阅读Eclipse的诊断,并将其作为找到解决方案的指南。Java教程也很有用。泛型类型由(尖括号)分隔,可以是任何类类型、任何接口类型、任何数组类型或其他类型变量。只要泛型类型是非基本类型,就可以继续。如果你想读更多,官方文件是什么“维度”意味着什么?