繁体   English   中英

java-我不明白方法语法

[英]java - I don't understand method syntax

我上课:

public abstract class Entry{
    protected static <T extends Entry> List<T> all(Class<T> cls) {
        blah blah
    }

和它的孩子:

class Article extends Entry {
    public static List<Article> all() throws SQLException {
        return Entry.all(Article.class);
    }
}

我不明白该方法的语法:

protected static <T extends Entry> List<T> all(Class<T> cls)

为什么我们不能只这样做呢?:

protected static List<T> all(Class<T> cls)
protected static <T extends Entry> List<T> all(Class<T> cls)

这意味着名为all的方法具有类型参数 T ,该参数必须是Entry的子类型(或Entry本身)。

Oracle Java教程中的泛型方法说明了语法及其含义。

为什么我们不能这样做?:

 protected static List<T> all(Class<T> cls) 

因为编译器不会自动用T知道,所以您是指类型参数而不是具体类型。

请注意,对于类型参数,类型参数的名称通常使用单个大写字母。 但这只是一个约定。 您可以使用任何有效标识符的名称。

如果名称应该是类型参数,则必须这样声明,否则Java编译器会认为它是具体类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM