Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用对象<;创建函数&燃气轮机;参数_Java_Generics_Methods - Fatal编程技术网

Java 使用对象<;创建函数&燃气轮机;参数

Java 使用对象<;创建函数&燃气轮机;参数,java,generics,methods,Java,Generics,Methods,我有一个这样的主要课程: public class MainClass() { public Class<? extends Object> myType; // This does not work, but thats what I want: public MainClass(Class<? extends Object> type) { myType = type; } public void myMethod(Object<my

我有一个这样的主要课程:

public class MainClass() {
  public Class<? extends Object> myType;
  // This does not work, but thats what I want:
  public MainClass(Class<? extends Object> type) {
    myType = type;
  }
  public void myMethod(Object<myType> myParameter) {
    // Do stuff
  }
}
public类MainClass(){

公共课你应该这样做:

public class MainClass<T> {
  public void myMethod(T myParameter) {
    // Do stuff
  }
}

public class ChildClass extends MainClass<String> {

}
public类MainClass{
公共void myMethod(T myParameter){
//做事
}
}
公共类ChildClass扩展了main类{
}

您应该这样做:

public class MainClass<T> {
  public void myMethod(T myParameter) {
    // Do stuff
  }
}

public class ChildClass extends MainClass<String> {

}
public类MainClass{
公共void myMethod(T myParameter){
//做事
}
}
公共类ChildClass扩展了main类{
}

您的代码有多处错误:

  • 在类声明之后有括号
    ()
  • 您试图为对象提供通用参数,而对象没有通用参数
  • 此外,您应该尝试声明泛型类型(如“T”),而不是使用“?”。请尝试以下操作:

    public class MainClass<T extends Object> {
          public Class<T> myType;
    
          public MainClass(Class<T> type) {
            myType = type;
          }
          public void myMethod(T myParameter) {
            // Do stuff
          }
    }
    
    class ChildClass extends MainClass<String> {
          public ChildClass() {
            super(String.class);
            // this should be changeable to what ever class then String.class
          }
    }
    
    public类MainClass{
    公共类myType;
    公共主类(类类型){
    myType=类型;
    }
    公共void myMethod(T myParameter){
    //做事
    }
    }
    类ChildClass扩展了main类{
    公共儿童班(){
    super(String.class);
    //这应该可以更改为what ever class,然后是String.class
    }
    }
    

    另外,请注意,`T extends Object`是完全冗余的,但我保留了它,因为您需要它。

    您的代码有多个错误:

  • 在类声明之后有括号
    ()
  • 您试图为对象提供通用参数,而对象没有通用参数
  • 此外,您应该尝试声明泛型类型(如“T”),而不是使用“?”。请尝试以下操作:

    public class MainClass<T extends Object> {
          public Class<T> myType;
    
          public MainClass(Class<T> type) {
            myType = type;
          }
          public void myMethod(T myParameter) {
            // Do stuff
          }
    }
    
    class ChildClass extends MainClass<String> {
          public ChildClass() {
            super(String.class);
            // this should be changeable to what ever class then String.class
          }
    }
    
    public类MainClass{
    公共类myType;
    公共主类(类类型){
    myType=类型;
    }
    公共void myMethod(T myParameter){
    //做事
    }
    }
    类ChildClass扩展了main类{
    公共儿童班(){
    super(String.class);
    //这应该可以更改为what ever class,然后是String.class
    }
    }
    


    另外,请注意,`T extends Object`是完全冗余的,但我保留了它,因为您需要它。

    Class
    java.lang.Object
    不接受类型参数,所以
    Object
    不起作用。myType是变量,不是类,我想您不能这样使用它。您的代码对我来说似乎很可疑,您想解释什么mplish?扩展对象
    与只说?不一样吗?我猜
    ChildClass
    扩展了
    MainClass
    ,但是在你的codeClass
    java.lang.Object
    中没有,所以
    对象
    不起作用。myType是可变的,不是类,我想你不能用它是这样的。你的代码对我来说似乎很可疑,你想实现什么?是不是
    ?extensed Object
    和刚才说的
    一样?我猜
    ChildClass
    扩展
    MainClass
    ,但是在你的代码中缺失了。我很遗憾回答这个问题,因为它在语法错误等方面缺乏努力-这是一个更好的答案+1谢谢!我不知道t可以用于此。他没有对myType类做任何操作,他可以删除它并保留默认构造函数,答案是“Bou Barnous”更准确不是更准确,只是更可取。是的,我同意,你不需要在课堂上做任何事情,但是如果你在没有太多解释的情况下使解决方案与尝试的解决方案太不一样,这对尽可能多地问问题的人没有帮助。我很遗憾回答这个问题,因为这表明我缺乏努力ts语法错误等-这是一个更好的答案+1谢谢!我不知道t可以用于此。他没有对myType类做任何操作,他可以删除它并保留默认构造函数,答案是“Bou Barnous”是的,我同意,你不需要对类做任何事情,但是如果你使解决方案与没有太多解释的情况下尝试过的解决方案太不一样,那么它对提出问题的人没有多大帮助。与其只显示代码,还不如解释什么是wro与原版的区别是什么。与其只显示代码,不如解释原版的错误和区别是什么。