How to interpret “public T readObjectData(… Class type)” in Java?
我有这个Java代码。
1 2 3 4 | public < T > T readObjectData(ByteBuffer buffer, Class< T > type) { ... T retVal = (T) summaries; return retVal; |
如何解释这段代码? 为什么我们需要
如何将参数赋给第二个参数(
这声明了
1 | public < T > ... |
然后返回类型是
1 | ... T readObjectData(... |
如果没有初始
在参数列表中,
要传入参数,请传入任何
在这种情况下,
1 2 3 4 | public < T > T readObjectData(... ^ ^ | + Return type + Generic type argument |
因为方法定义如下:
你可以按下面的说法调用它:
请注意,您不必将
它的用法如下:
由于铸造可能导致
您可能会对类似且更常见的声明感到困惑:
1 2 3 4 5 | class MyClass< T > { private T myMethod(T a){ return a; } } |
在上述情况下,私有后不需要
因为它使用的
更重要的是,如果你写
1 2 3 4 5 | class MyClass< T > { private < T > T myMethod(T a){ return a; } } |
那么意思是myMethod返回类型(可能)与MyClass类型不同。好像你写了这个:
1 2 3 4 5 | class MyClass<T1> { private <T2> T2 myMethod(T2 a){ return a; } } |
致谢:从"Kanagavelu Sugumar"中如何使用Java中的Class < T >获得更长的答案?