[英]Java generic, Is this best way?
這是我的示例代碼
public class Example {
static interface Data {
}
static interface Source<D extends Data> {
public D read();
}
static class Stream<S extends Source<D>, D extends Data> {
public S source;
public Stream(S source){
this.source = source;
}
public D get() {
return this.source.read();
}
}
static class SampleData implements Data {
}
static class SampleSource implements Source<SampleData> {
@Override
public SampleData read() {
return null;
}
}
public static void main(String[] args) {
Stream sampleSourceStream = new Stream<SampleSource, SampleData>();
}
}
我想省略(為了更漂亮的結構/易於使用)
static class Stream<S extends Source<D>, D extends Data>
至
static class Stream<S extends Source<D>>
或者
new Stream<SampleSource, SampleData>()
至
new Stream<SampleSource>()
(我知道它可以在 C# 中省略...)
我怎樣才能省略或制作更漂亮的圖案?
不要定義S
,它沒有任何作用:
static class Stream<D extends Data> {
public Source<D> source;
public Stream(Source<D> source){
this.source = source;
}
public D get() {
return this.source.read();
}
}
public static void main(String[] args) {
SampleSource sampleSource = new SampleSource();
Stream<SampleData> sampleSourceStream = new Stream<>(sampleSource);
}
或者在 Java 10+ 中甚至更簡單,使用var
:
public static void main(String[] args) {
SampleSource sampleSource = new SampleSource();
var sampleSourceStream = new Stream<>(sampleSource);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.