Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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 Spring引导服务方法返回接口页_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring引导服务方法返回接口页

Java Spring引导服务方法返回接口页,java,spring,spring-boot,Java,Spring,Spring Boot,假设我有一个界面东西,如下所示: public interface Stuff { Long getId(); String getName(); } public interface StuffService { Page<? extends Stuff> getStuff(Pageable pageable); } 我将此接口实现为StuffEntity: @Entity public class StuffEntity implements Stuff {

假设我有一个界面
东西
,如下所示:

public interface Stuff {
  Long getId();

  String getName();
}
public interface StuffService {
  Page<? extends Stuff> getStuff(Pageable pageable);
}
我将此接口实现为
StuffEntity

@Entity
public class StuffEntity implements Stuff {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  protected Long id;
  protected String name;

  // constructors, getters (implement interface methods), setters, ...
}
我有一个服务接口
StuffService

public interface StuffService {
  Page<Stuff> getStuff(Pageable pageable);
}
我不喜欢在这里强制转换并创建
PageImpl
的新实例,因此我尝试了以下方法:

public interface Stuff {
  Long getId();

  String getName();
}
public interface StuffService {
  Page<? extends Stuff> getStuff(Pageable pageable);
}
公共接口服务{

Page最好不要使用通配符类型作为返回类型

强烈建议不要将通配符类型用作返回类型。 由于类型推断规则相当复杂,因此 该API的用户将知道如何正确使用它


让我们以返回“List的方法为例,最好不要使用通配符类型作为返回类型

强烈建议不要将通配符类型用作返回类型。 由于类型推断规则相当复杂,因此 该API的用户将知道如何正确使用它


让我们以返回“列表”的方法为例,“我不太担心服务的客户端”为什么?客观上第二个更好。我认为页面是?或者如果不是,它至少是只读的,即您不能向页面中添加项目?在这种情况下,适用。它是生产者,所以扩展是正确的选择。我担心客户端,因为现在它必须处理通配符。但是是的,返回的
页面
应该是只读。此外,它永远不会是多种类型的
Stuff
的集合,但我可能有
公共类StuffOtherImpl实现Stuff
公共类StuffServiceOtherImpl实现StuffService
,它们将返回
StuffOtherImpl
页面对于实体的接口,这通常是要避免的。@M.Deinum beeecause…?“我不太担心服务的客户端”为什么?客观上第二个更好。我认为页面是?或者如果不是,它至少是只读的,即您不能向页面中添加项目?在这种情况下,适用。它是生产者,所以扩展是正确的选择。我担心客户端,因为现在它必须处理通配符。但是是的,返回的
页面
应该是只读。此外,它永远不会是多种类型的
Stuff
的集合,但我可能有
公共类StuffOtherImpl实现Stuff
公共类StuffServiceOtherImpl实现StuffService
,它们将返回
StuffOtherImpl
页面对于实体的接口,这通常是要避免的。@M.Deinum beeecause…?仅链接的答案不是好的答案,慈善机构的投票也不是好的投票。@Kayaman告诉人们如何使用他们的投票是浪费时间和精力的,人们会做他们想做的事,即使这个答案来自“权威机构”像Sonar这样的来源。整个理由似乎是你不能添加到列表中。好吧,如果它不是一个集合呢?OP有一个页面,不可能添加到一个页面中。似乎PECS适用。我不同意“该API的用户不太可能知道如何正确使用它”只有链接的答案不是好的答案,慈善机构的投票也不是好的投票。@Kayaman告诉人们如何使用他们的投票是浪费时间和精力的,人们会做他们想做的事情。尽管这个答案来自“权威”网站像Sonar这样的来源。整个理由似乎是你不能添加到列表中。好吧,如果它不是一个集合呢?OP有一个页面,不可能添加到一个页面中。似乎PECS适用。我不同意“该API的用户不太可能知道如何正确使用它”