【问题标题】:What do angle brackets mean as a part of the return type? <T> T [duplicate]作为返回类型的一部分,尖括号是什么意思? <T> T [重复]
【发布时间】:2013-04-05 14:49:46
【问题描述】:

对于此方法,&lt;T&gt; 部分作为此方法的返回类型的一部分意味着什么?我会在哪里指定.class 文件?它甚至是返回类型定义的一部分吗?它的用途是什么?是定义第二个参数Class&lt;T&gt; requiredType要使用的类类型还是不用于参数定义?

public <T> T queryForObject(String sql, Class<T> requiredType, Map<String, ?> args) throws DataAccessException {
    return getNamedParameterJdbcOperations().queryForObject(sql, args, requiredType);
}

【问题讨论】:

标签: java generics


【解决方案1】:
public <T> T queryForObject(String sql, Class<T> requiredType, Map<String, ?> args) throws DataAccessException {
  1. &lt;T&gt; ---> 不是您在方法级别声明泛型类型的返回类型,因此您可以在方法中使用此类型T
  2. T ----> 是您的方法的返回类型

【讨论】:

  • 那么,让我正确理解这一点,作为方法签名的一部分,您可以声明一个新的泛型类型,它不仅可以用作返回类型,还可以用作该方法的参数?或者,Class&lt;T&gt; 参数是否在方法签名中声明的泛型类型之外声明了一个新的泛型类型?感谢您的回答,PermGenError!
  • public 之后的&lt;T&gt; 是声明类型参数。 Class&lt;T&gt; 只是使用了之前声明的这个参数。参数是一种表示任何类作为requiredType 传入的方式,方法的返回类型将与该类型相同。
  • 在实施时如何使用那行代码(在 OP 帖子中)?是这样的吗……? instanceOfT.queryForObject(); 哪个返回另一个 T 类型的对象?
【解决方案2】:

&lt;T&gt; 只是定义了一个泛型类型T,然后可以在您的方法签名中引用它。没有它,您的代码将无法编译。

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多