我正在学习使用Eclipse IDE和Spring-Boot框架创建Java API的过程。因此,我面临着无法解决的语法问题。以下是我的代码供您参考,
package first.microservice.moviecatalogservice.resources;
import java.util.Collections;
import java.util.List;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import first.microservice.moviecatalogservice.models.CatalogItem;
@RestController
@RequestMapping("/catalog")
public class MovieCatalogResource {
@RequestMapping("/{user_id}")
public List<CatalogItem> getCatalog(@PathVariable("user_id") String user_id)
{
return Collections.singletonList(
<CatalogItem> new CatalogItem(name: "DonJon", desc: "Test", rating: 4)
);
}
}
另一个具有CatalogItem类的代码,
package first.microservice.moviecatalogservice.models;
public class CatalogItem {
private String Name;
private String Desc;
private int Rating;
public CatalogItem(String name, String desc, int rating) {
Name = name;
Desc = desc;
Rating = rating;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getDesc() {
return Desc;
}
public void setDesc(String desc) {
Desc = desc;
}
public int getRating() {
return Rating;
}
public void setRating(int rating) {
Rating = rating;
}
}
我希望输入url模式以显示要在浏览器上显示的商品的硬编码值。
我在以下一行中遇到错误
return Collections.singletonList(
<CatalogItem> new CatalogItem(name: "DonJon", desc: "Test", rating: 4)
);
错误指出,
Collections类型的singletonList(T)方法不适用于参数(CatalogItem)
此行有多个标记 -令牌“ <”的语法错误,表达式无效 -令牌“:”的语法错误,无效的AssignmentOperator -名称不能解析为变量 -令牌“:”的语法错误,无效的AssignmentOperator -desc无法解析为变量 -令牌“:”的语法错误,无效的AssignmentOperator -无法将评分解析为变量
答案 0 :(得分:2)
AFAIK Java不支持命名参数。因此,这一行
<CatalogItem> new CatalogItem(name: "DonJon", desc: "Test", rating: 4)
将给出您面临的语法错误。更改为
new CatalogItem("DonJon", "Test", 4)
它应该可以工作
答案 1 :(得分:1)
在Eclipse中,
答案 2 :(得分:0)
我希望您的getCatalog
方法中存在编译时错误。请更改返回声明,如下所示:
public List<CatalogItem> getCatalog(@PathVariable("user_id") String user_id)
{
return Collections.singletonList(new CatalogItem("DonJon", "Test", 4));
}