Java 插入维度以完成表达式/引用类型
我是Java的新手 我提供了BFS代码的一个简短片段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标记; 私
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教程也很有用。泛型类型由(尖括号)分隔,可以是任何类类型、任何接口类型、任何数组类型或其他类型变量。只要泛型类型是非基本类型,就可以继续。如果你想读更多,官方文件是什么“维度”意味着什么?