将对象转换为字符串错误
converting object to string error
有人可以告诉我这是将对象转换为字符串的正确方法吗?首先是下面的错误
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String word = it.next(); // Object to string error
String input = responseMap.get(word);
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
然后我这样做了,它奏效了。
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String input = responseMap.get(it.next());// i put it here
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
我很好奇这个错误。我做了一些研究,因为我只是在学习我不知道这是对还是错。它奏效了,但对吗?
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String word = it.next().toString();// added toString()
String input = responseMap.get(word);
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
是的
- 您不能将哈希集直接分配给字符串。
你必须转换它。使用 toString 方法
关于我的信息,在你的第二种情况下......
当您使用以下代码时
"String input = responseMap.get(it.next());"
对于不同的数据类型,有许多重载方法。因此,当您直接提供哈希集时。它工作正常
字符串字=it.next()
首先它没有“;”来结束字符串,其次你需要明确地将它转换为 String
将代码更改为 String word = (String)it.next();
将原始类型迭代器更改为通用类型。
Iterator it = words.iterator();
到
Iterator<String> it = words.iterator();
Iterator it = words.iterator();
这条语句忽略了迭代器的类型参数。这意味着 it.next()
的 return 类型是 Object
,如果不进行强制转换,则无法将其分配给 String
。
responseMap.get(it.next());
有效,因为 Map.get
的参数具有 Object
.
类型
String word = it.next().toString();
也会起作用,因为 it.next()
编辑的 Object
return 实际上是 String
,因此 toString
return相同 String
.
这也行得通:
String word = (String) (it.next());
但我建议在 Iterator
变量中添加一个类型参数:
Iterator<String> it = words.iterator();
while(it.hasNext()){
String word = it.next();
// ...
注意: "Ignoring" 大多数情况下,类型参数不是一个好主意。
有人可以告诉我这是将对象转换为字符串的正确方法吗?首先是下面的错误
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String word = it.next(); // Object to string error
String input = responseMap.get(word);
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
然后我这样做了,它奏效了。
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String input = responseMap.get(it.next());// i put it here
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
我很好奇这个错误。我做了一些研究,因为我只是在学习我不知道这是对还是错。它奏效了,但对吗?
public String generateResponse(HashSet<String> words){
Iterator it = words.iterator();
while(it.hasNext()){
String word = it.next().toString();// added toString()
String input = responseMap.get(word);
if(input != null){
return input;
}
}
return pickDefaultResponse();
}
是的
- 您不能将哈希集直接分配给字符串。
你必须转换它。使用 toString 方法
关于我的信息,在你的第二种情况下...... 当您使用以下代码时
"String input = responseMap.get(it.next());"
对于不同的数据类型,有许多重载方法。因此,当您直接提供哈希集时。它工作正常
字符串字=it.next()
首先它没有“;”来结束字符串,其次你需要明确地将它转换为 String
将代码更改为 String word = (String)it.next();
将原始类型迭代器更改为通用类型。
Iterator it = words.iterator();
到
Iterator<String> it = words.iterator();
Iterator it = words.iterator();
这条语句忽略了迭代器的类型参数。这意味着 it.next()
的 return 类型是 Object
,如果不进行强制转换,则无法将其分配给 String
。
responseMap.get(it.next());
有效,因为 Map.get
的参数具有 Object
.
String word = it.next().toString();
也会起作用,因为 it.next()
编辑的 Object
return 实际上是 String
,因此 toString
return相同 String
.
这也行得通:
String word = (String) (it.next());
但我建议在 Iterator
变量中添加一个类型参数:
Iterator<String> it = words.iterator();
while(it.hasNext()){
String word = it.next();
// ...
注意: "Ignoring" 大多数情况下,类型参数不是一个好主意。