Java 无法将泛型对象作为父级和子级-整数中的方法参数传递到E

Java 无法将泛型对象作为父级和子级-整数中的方法参数传递到E,java,generics,inheritance,Java,Generics,Inheritance,这是我的情况,我无法让它发挥作用 public class A<E extends Comparable<E>> { E e; void setE(E e1){ e = e1; } } public class main{ public static void main(String[] args){ A<Integer> aObj = new A<Intege

这是我的情况,我无法让它发挥作用

public class A<E extends Comparable<E>> {

    E e;
    void setE(E e1){ 
        e = e1; 
     }
}

public class main{

      public static void main(String[] args){

              A<Integer> aObj = new A<Integer>

              aObj.setE(some_e);  // works perfectly

              C cObj = new C();

             // this is what I want to do or something similar but it doesnt work because of the failure shown below
             cObj.readSomeFileToGetE(aObj); 

     }
公共A类{
E;
空集(e1){
e=e1;
}
}
公共班机{
公共静态void main(字符串[]args){
A aObj=新的A
setE(some_e);//工作正常
C cObj=新的C();
//这就是我想要做的或类似的事情,但由于下面显示的失败,它不起作用
cObj.readSomeFileToGetE(aObj);
}
然而,我有另一个类,它确实需要设置E而不是main(因为它读取一个文件并有很多方便的相关代码),它有一个父子层次结构,如下所示:

public class B{

     public <E extends Comparable<E>> void readSomeFileTogetE(A<E>);

}

public class IntB extends B() {

   //This derived class will only cater to Integers. Similar sibling classes will cater to Floats, etc.

    public <E extends Comparable<E>> void readsomeFileTogetE(A<E> aObj){

           //buffered reader defined to read a file that store an integer
           String xyz = br.readline();

           Integer some_e = Integer.parseInt(xyz);

           aObj.setE(some_e); // fails saying Integer cannot be converted to E. 

    }

}
公共B类{
公共无效readSomeFileTogetE(A);
}
公共类IntB扩展了B(){
//这个派生类将只处理整数。类似的兄弟类将处理浮点等。
public void readsomeFileTogetE(A aObj){
//定义为读取存储整数的文件的缓冲读取器
字符串xyz=br.readline();
整数some_e=Integer.parseInt(xyz);
setE(some_e);//无法将整数转换为e。
}
}
公共类FloatB扩展了B(){

//此派生类仅适用于浮动。
public void readsomeFileTogetE(A aObj){
//定义为读取存储整数的文件的缓冲读取器
字符串xyz=br.readline();
整数some_e=Float.parseFloat(xyz);
setE(some_e);//也会失败。
}
}
本质上,我必须将一个泛型对象作为参数传递给子类

我来自一个C编程世界,在那里传递空洞似乎更容易,但在Java中,强类型语法使它变得更难


可以用Java实现我的计划吗?非常感谢您的帮助。谢谢。

阅读错误消息。这很清楚。您有一个类型为A的对象。它的方法setE()以E为参数。您正在传递一个整数。因此无法编译。如果您想调用setE()用一个整数作为参数,那么,
aObj
应该是类型A。请发布A。不要用
缩写你的代码。…
显示你实际上在做什么。不,这在main中不起作用。在main中,aObj是类型A。不是类型A。你可以把鸡蛋放进一盒鸡蛋里。你可以把巧克力放进一盒巧克力里。你不能把巧克力放进一盒巧克力里鸡蛋装进一盒巧克力,因为盒子是装巧克力的,不是鸡蛋。这里也是。如果你贴了一个完整的最小示例,没有未知的方法和缩写,我可能会建议正确的设计。是的。B类(不是它的方法)应该是泛型的。C应该扩展B。我认为C和IntB实际上是同一件事。如果你发布一个最小的可复制的例子,一切都会容易得多。你读过我以前的评论吗?它解释了你应该做什么。你试过吗?在那篇评论中有什么你不明白的吗?
   //This derived class will only cater to Floats. 

    public <E extends Comparable<E>> void readsomeFileTogetE(A<E> aObj){

           //buffered reader defined to read a file that store an integer
           String xyz = br.readline();

           Integer some_e = Float.parseFloat(xyz);

           aObj.setE(some_e); // will fail as well. 

    }

}