Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Meaning of <T, U extends T> in java function declaration

I am seeing this:

public static <T,U extends T> AutoBean<T> getAutoBean(U delegate)

I know the input class is of U type and AutoBean class is of T type and U extends T is the boundary. But what does <T, mean here?

Also, if I am going to write a function to accept the output of getAutoBean, how would you write the function declaration? (i.e. myFunction(getAutoBean(...)), what will the function declaration of myFunction() be?)

Thank you!

like image 568
user1589188 Avatar asked Mar 19 '13 03:03

user1589188


1 Answers

It just declares the types that your method deals with. That is to say, that it basically has to first declare the generic type names, and only then use them in the signature. <T doesn't mean anything by itself, but the letters within angular brackets mean "Here are the types I am going to use in the method".

As to "myFunction()" to work with the output of getAutoBean(...):

public static  <T> String myFunction(AutoBean<T> arg){ // If you return a generic type object, you will also have to declare it's type parameter in the first angular brackets and in angular brackets after it.
    // do work here
}

like image 188
Ibolit Avatar answered Nov 25 '22 01:11

Ibolit