I see a new form of type casting in some codes related to JavaFX. The strange thing about it is its functionality that works like type casting but I can't find it [under the categories of casting in Java 8 Specifications](http://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html). This is an example:

```
    FXMLLoader loader = new FXMLLoader(getClass().getResource("tabs/tabbedWin.fxml"));
    TabbedWinController twc1 = loader.<TabbedWinController>getController();
    TabbedWinController twc2 = (TabbedWinController) loader.getController();

```

The two last lines seem to do the same job but I wonder what the syntax in front of `twc1` mean? It is completely new to me. 

If it is type casting why can't I use the statements like `int i = <Integer> f;` where f is a float variable?

So I'm curious to understand what it is? Since when it has been added to Java? Where I should/can/shouldn't use it?