Java通用,这是最好的方法吗?

Java通用,这是最好的方法吗?,java,generics,Java,Generics,这是我的示例代码 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 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>();
    }
}
公共类示例{
静态接口数据{
}
静态接口源{
公共D read();
}
静态类流{
公共资源;
公共流(S源){
this.source=源;
}
公共D get(){
返回此.source.read();
}
}
静态类SampleData实现数据{
}
静态类SampleSource实现源代码{
@凌驾
公共样本数据读取(){
返回null;
}
}
公共静态void main(字符串[]args){
Stream sampleSourceStream=新流();
}
}
我想省略(为了结构更美观/使用更方便)

静态类流

静态类流

newstream()

newstream()
(我知道它可以在C#…)中省略)


我如何才能省略或制作更漂亮的图案?

不要定义
S
,它没有任何用途:

静态类流{
公共来源;
公共流(源){
this.source=源;
}
公共D get(){
返回此.source.read();
}
}
publicstaticvoidmain(字符串[]args){
SampleSource SampleSource=新的SampleSource();
流sampleSourceStream=新流(sampleSource);
}
或者在Java 10+中更简单,使用
var

publicstaticvoidmain(字符串[]args){
SampleSource SampleSource=新的SampleSource();
var sampleSourceStream=新流(sampleSource);
}

不要定义
S
,它没有任何用途:

静态类流{
公共来源;
公共流(源){
this.source=源;
}
公共D get(){
返回此.source.read();
}
}
publicstaticvoidmain(字符串[]args){
SampleSource SampleSource=新的SampleSource();
流sampleSourceStream=新流(sampleSource);
}
或者在Java 10+中更简单,使用
var

publicstaticvoidmain(字符串[]args){
SampleSource SampleSource=新的SampleSource();
var sampleSourceStream=新流(sampleSource);
}
Unrelated:若要有效,则
main
中的代码应为:
Stream sampleSourceStream=new Stream(null)
Unrelated:要有效,
main
中的代码应该是:
Stream sampleSourceStream=new Stream(null)
static class Stream<S extends Source<D>, D extends Data>
static class Stream<S extends Source<D>>
new Stream<SampleSource, SampleData>()
new Stream<SampleSource>()