Q:

what this method return?

I am reading the following code,
public static <t> T getFirst(List<T> list)

I understand the List<T> list, the method get a reference to List<T> as parameter, and return 
an object with type T, but what about the <t> after the keyword public static?
what does this mean?

A:

<t> declares a type parameter. That means that the method has a type parameter that can change on each invocation.
Unless T is a concrete type in your project (which is unlikely), the <t> should be <T>.
So in plain english <T> T getFirst(List<T> list) means:

there's a method called getFirst
it has a type parameter T (i.e. an arbitrary type which is aliased to T)
it takes a List<T> as its argument (i.e. a List of objects of that arbitrary type).
it returns a T object (i.e. an instance of that arbitrary type).

If you just wrote T getFirst(List<T> list) then the meaning would change:

there's a method called getFirst
it takes a List<T> as its argument (i.e. a List of objects of the concrete type T)
it returns an object of the concrete type T.

