Java 如何理解泛型方法中选择了什么类型而不是T?

Java 如何理解泛型方法中选择了什么类型而不是T?,java,generics,type-conversion,wildcard,type-inference,Java,Generics,Type Conversion,Wildcard,Type Inference,请研究以下代码段: class Ideone { public static void main (String[] args) throws java.lang.Exception { List<Integer> listIntegers = null; List<Object> listObjects = null; MyClass mcls =new MyClass (); SomeRefer

请研究以下代码段:

class Ideone {
    public static void main (String[] args) throws java.lang.Exception {
        List<Integer> listIntegers = null;
        List<Object> listObjects = null;
        MyClass mcls =new MyClass ();

        SomeReference ref = mcls.method(listIntegers,listObjects));//which SomeReference may be?
    }
}

class MyClass {
    <T> T  method(List<? extends T> arg1, List<? super T> arg2) {
        return null;
    }
}
类表意符{
公共静态void main(字符串[]args)引发java.lang.Exception{
List listIntegers=null;
List listObjects=null;
MyClass mcls=新的MyClass();
SomeReference ref=mcls.method(listIntegers,listObjects));//哪个SomeReference可能是?
}
}
类MyClass{

T方法(List它可能会帮助您理解它。因为您无法从第二个列表返回任何项目,所以只有一个选项可以从第一个列表返回项目

class MyClass {
    <T> T method(List<? extends T> list1, List<? super T> list2) {
        return list1.get(0); // Valid
        //return list2.get(0); // Invalid Type mismatch: cannot convert from capture#1-of ? super T to T
    }
}

List<Integer> listIntegers = new ArrayList<Integer>();
listIntegers.add(1);

List<String> listObjects = new ArrayList<String>();
listObjects.add("2");

MyClass mcls = new MyClass();

// Valid
Integer result=mcls.method(listIntegers, listObjects);

// Invalid
String result=mcls.method(listIntegers, listObjects);
// The method method(List<? extends T>, List<? super T>) in the type MyClass is not applicable for the arguments (List<Integer>, List<String>)
class-MyClass{

T法(列出您想要返回的内容?您的预期输出是什么?@Braj我不知道我可以返回什么。我想知道所有可能的差异如果不知道您想要做什么,请先考虑一下,然后再问一次。即使您不知道此方法在这里做什么,那么您为什么希望我们考虑它。永远不要问任何这样愚蠢的问题我想这样写:Reference ref=mcls.method(listIntegers,listObjects)看,你传递了两个列表,只返回了一个项目。但我不清楚你是如何在方法中使用这些列表的,以及你想返回什么。请说得更清楚一点……最具体的类型是什么?如果你认为你将在这个方法中传递两个不同类型的列表,那么使用双通用参数
,它只是T理论问题