1

在 Java 中,我发现了这样的奇怪方法声明:

<T> T org.apache.commons.dbutils.BeanProcessor.toBean(ResultSet rs, Class<T> type) throws SQLException

这是什么意思<T> T?这<T>之前是什么意思T,为什么返回的类型不是 just "T"

我已经下载了org.apache.commons.dbutils.BeanProcessor类的源代码并找到了以下方法:

private <T> T createBean(ResultSet rs, Class<T> type,
        PropertyDescriptor[] props, int[] columnToProperty)
        throws SQLException {
    T bean = this.newInstance(type);

    for (int i = 1; i < columnToProperty.length; i++) {
        if (columnToProperty[i] == PROPERTY_NOT_FOUND) {
            continue;
        }
        PropertyDescriptor prop = props[columnToProperty[i]];
        Class<?> propType = prop.getPropertyType();

        Object value = null;
        if(propType != null) {
            value = this.processColumn(rs, i, propType);

            if (value == null && propType.isPrimitive()) {
                value = primitiveDefaults.get(propType);
            }
        }
        this.callSetter(bean, prop, value);
    }
    return bean;
}

如您所见,返回的bean对象的T类型为 not <T> T。为什么?

4

0 回答 0