Java 如何使用主类中的方法从嵌套类返回泛型类型

Java 如何使用主类中的方法从嵌套类返回泛型类型,java,generics,Java,Generics,假设我有一个将数据类型延迟到实例化的类,我想从该类中的方法返回一个泛型数据类型。我的类以以下方式声明: public class myClass<T> { private class nestedClass { public T item; constructor... } private nestedClass x; } 当我运行代码时,我得到一个错误,上面写着,线程主java.lang.NoSuchMethodErr

假设我有一个将数据类型延迟到实例化的类,我想从该类中的方法返回一个泛型数据类型。我的类以以下方式声明:

public class myClass<T> {
    private class nestedClass {
        public T item;
        constructor...
    }  

    private nestedClass x;
}
当我运行代码时,我得到一个错误,上面写着,线程主java.lang.NoSuchMethodError中的Exception:myClass.myMethodLmyClass$nestedClass; 导致此错误的代码是:

myClass<Integer> x = new myClass<Integer>();
x.myMethod();
目前,myMethod如下所示:

public <T> T myMethod() {
    nestedClass a = new nestedClass();
    return (T)a.item;
}

该方法应返回泛型类型T,如下所示:

public <T> T myMethod() {
    return (T)nestedClass.item;
}
注:

在您的示例中,NestedClass.item实际上不需要类型转换,因为item的类型为t,但如果您希望返回不同的非t类型变量,则需要类型转换


返回变量后,您可以将其类型转换回它原来的任何对象/原语。

myClass需要对nestedClass实例的引用才能访问其内容,当然。@Smutje很抱歉,最初没有明确说明。我有一个对nestedClass实例的引用。我在最初的问题中更新了这一点。当我尝试运行我当前的方法时,我得到了一个错误,没有这样的方法存在。即使你不能发布你的实际代码,你仍然需要发布足够的代码,以便我们了解你试图做什么的要点。任何机密信息都不太可能与您的问题相关,因此您应该能够消除这些信息,并根据需要更改标识符名称。目前,您的问题无法回答。myMethod声明在哪里?请坚持Java命名约定,即使OP没有。这样更好-当我运行该代码时,仍然会出现NoSuchMethodError。我不确定出了什么问题。感谢您迄今为止的所有帮助。您一定是错误地引用了该方法。但是如果没有你发布的实际代码,我们无法帮助你!没问题,很乐意帮忙:
public <T> T myMethod() {
    return (T)nestedClass.item;
}
public class MyOuterClass {

    MyInnerClass<Integer> myInnerClass;

    public MyOuterClass(){
        myInnerClass = new MyInnerClass<>();  
    }

    public static void main(String[] args) {
        MyOuterClass myOuterClass = new MyOuterClass();
        System.out.println((String)myOuterClass.myInnerClass.myMethod());
    }

    public class MyInnerClass<T> {    
        private class NestedClass {
              public String item = "It works!";
        }

        private final NestedClass nestedClass = new NestedClass();

        public <T> T myMethod() {
             return (T)nestedClass.item; 
        }
    }
}