java中这种定义方法时第一次见,嘛意思 ,具体如下
public static final <T extends Comparable> void test()
{
}加粗部分啥意思:方法的定义一般不是
1 )public static final void test()
{
}
2)public static final 返回类型 test()
{
}
public static final <T extends Comparable> void test()
{
}加粗部分啥意思:方法的定义一般不是
1 )public static final void test()
{
}
2)public static final 返回类型 test()
{
}
没有void了吧?
或者 <T extends Comparable> 只能留其一.
<T extends Comparable> 就是返回的类型是 继承自Comparable的.
我测试过,只有在test
只有返回return ;才会没错.
<T extends Comparable> void test(T, t1) {}
我觉得一般会这样子用的比较多.用了限定 T的类型
看差了 原来后面跟个VOID 见笑了
泛型 T 可以是继承了 Comparable 的类型,但不仅限于 Comparable 类型, 同时还可以添加上接口的限制
<T extends Comparable & SomeInterface> 进一步对泛型 T 进行限制
如果这样呢?
public static final <T extends Comparable> void test(T[] array)
{
T在方法中被用到了
}
class A {
public <T> T dosomething(){...}
}
没有尖括号的 T 才是方法的返回类型, 具体调用的时候可以
A.<Person>dosomething(); 如此指定方法的泛型,当然如果方法参数也使用了这个泛型,例如
class B {
public <T> T dosomething2(T t){..}
}
那么调用的时候可以不用指明直接 B.dosomething2(person) 这是因为 JVM 会根据方法的参数自己
猜到此处的泛型是 Person
在方法
public static final <T extends Comparable> void test(T[] array)
{
T在方法中被用到了
}
中带有 void 说明什么? 还是有这样的规定,可以这样定义?
public static final <T extends Comparable> void test(T[] array)
{
T在方法中被用到了
}<T extends Comparable> 只是定义了一个T,是继承Comparable类的一个子类,而这个方法真正的返回类型是void,对吗?