Java 伪类型参数使程序无法编译

Java 伪类型参数使程序无法编译,java,Java,我在Java11(Intellij和Jenkins)中遇到了一个问题,并进行了最小限度的复制。一位同事认为这是Java中的一个bug 当然,以下是汇编: public class Main { public static class Unused {}; public interface BaseClass<T> { Long pie(); } public static class ChildImpl implements Ba

我在Java11(Intellij和Jenkins)中遇到了一个问题,并进行了最小限度的复制。一位同事认为这是Java中的一个bug

当然,以下是汇编:

public class Main {

    public static class Unused {};

    public interface BaseClass<T> {
        Long pie();
    }

    public static class ChildImpl implements BaseClass<Unused> {
        @Override
        public Long pie() { return 3L; }
    }

    public static void main(String args[]) {
        BaseClass myObject = new ChildImpl();
        Long piece = myObject.pie();
    }
}
公共类主{
公共静态类未使用{};
公共接口基类{
长馅饼();
}
公共静态类ChildImpl实现基类{
@凌驾
公共长饼图(){return 3L;}
}
公共静态void main(字符串参数[]){
基类myObject=new ChildImpl();
长片=myObject.pie();
}
}
但为什么不编译下面的代码

import java.util.Collections;
import java.util.List;

public class Main {

    public static class Unused{};

    public interface BaseClass<T> {
        List<Long> pie();
    }

    public static class ChildImpl implements BaseClass<Unused> {
        @Override
        public List<Long> pie() { return Collections.singletonList(3L); }
    }

    public static void main(String args[]) {
        BaseClass myObject = new ChildImpl();
        Long piece = myObject.pie().get(0);
    }
}
import java.util.Collections;
导入java.util.List;
公共班机{
公共静态类未使用{};
公共接口基类{
列表饼图();
}
公共静态类ChildImpl实现基类{
@凌驾
public List pie(){return Collections.singletonList(3L);}
}
公共静态void main(字符串参数[]){
基类myObject=new ChildImpl();
长片段=myObject.pie().get(0);
}
}
提示屏幕截图:

当然,在实际项目中,“未使用的”类型参数是在其他地方使用的实际类型参数,因此我不能删除它(这将是另一种将复制减少到编译程序的方法)。我能解决这个问题吗


注意:从技术上讲,这种复制并不完全是最小的,因为可以删除未使用的类,并且“Object”可以用作类型参数。

您通过以下方式禁用了泛型类型参数:

    BaseClass myObject = new ChildImpl();
应该是哪一个

    BaseClass<Unused> myObject = new ChildImpl();
BaseClass myObject=new ChildImpl();
然后
List
就变成了一个对象列表


正如@ernest_k评论的那样,我明白了。

您是否认为在
BaseClass myObject=new ChildImpl()中使用原始类型
BaseClass
导致编译错误?