相关疑难解决方法(0)

我应该退回收藏品还是流?

假设我有一个方法将只读视图返回到成员列表:

class Team {
    private List < Player > players = new ArrayList < > ();

    // ...

    public List < Player > getPlayers() {
        return Collections.unmodifiableList(players);
    }
}
Run Code Online (Sandbox Code Playgroud)

进一步假设所有客户端都立即迭代一次列表.也许将玩家放入JList或其他东西.客户端就不能存储到列表的引用以便稍后进行检查!

鉴于这种常见情况,我应该返回一个流吗?

public Stream < Player > getPlayers() {
    return players.stream();
}
Run Code Online (Sandbox Code Playgroud)

或者在Java中返回非惯用的流?设计的流是否始终在它们创建的同一表达式中"终止"?

java collections encapsulation java-8 java-stream

152
推荐指数
2
解决办法
3万
查看次数

从Spring REST控制器返回流

如果有可能Stream从春天回来,我很好奇RestController

@RestController
public class X {
  @RequestMapping(...)
  public Stream<?> getAll() { ... }
}
Run Code Online (Sandbox Code Playgroud)

做这样的事情可以吗?我尝试过,Spring返回除了流的值以外的其他内容.

我要一直回来List<?>吗?

java spring

13
推荐指数
2
解决办法
9925
查看次数

我应该在界面上暴露Stream <T>吗?

如果我正在编写.NET代码,我会经常暴露IEnumerable<T>它可能有意义的地方.也许这取决于LINQ以及你可以使用foreach的事实,但是做到这一点感觉"正确".

private List<String> _myList;

public IEnumerable<String> MyList
{
    get { return _myList; }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在编写Java 8代码,我正在讨论是否应该以Stream<T>同样的方式在可能的情况下公开?也许是因为我必须打电话Collection.stream(),感觉就像是"做工",但感觉不对?

private Collection<String> myCollection;

public Stream<String> getStuff() {
    return myCollection.stream();
}
Run Code Online (Sandbox Code Playgroud)

是否Stream<T>应该以IEnumerable<T>可能的相同方式暴露在接口上?

java java-8 java-stream

4
推荐指数
1
解决办法
265
查看次数

标签 统计

java ×3

java-8 ×2

java-stream ×2

collections ×1

encapsulation ×1

spring ×1