如何在API中返回单例列表?

时间:2019-04-22 11:08:35

标签: java api spring-boot

我正在学习使用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     -无法将评分解析为变量

3 个答案:

答案 0 :(得分:2)

AFAIK Java不支持命名参数。因此,这一行

<CatalogItem> new CatalogItem(name: "DonJon", desc: "Test", rating: 4)

将给出您面临的语法错误。更改为

new CatalogItem("DonJon", "Test", 4)

它应该可以工作

答案 1 :(得分:1)

在Eclipse中,

  1. 单击 Windows>首选项,然后在左侧选择 Maven
  2. 选中复选框启动时下载存储库索引更新
    • (可选)选中下载Artifact源下载Artifact JavaDoc。
  3. 单击“确定”。该警告将不再显示。
  4. 重新启动Eclipse。

答案 2 :(得分:0)

我希望您的getCatalog方法中存在编译时错误。请更改返回声明,如下所示:

public List<CatalogItem> getCatalog(@PathVariable("user_id") String user_id)
        {
            return Collections.singletonList(new CatalogItem("DonJon", "Test", 4));
        }