class Test { public void foo(T valIn){ double val = (double ) valIn; } public void foo1(T valIn){ double val = (double ) valIn; } public void foo2(T valIn){ double val = (double ) valIn; } public void foo2(T valIn){ double val = (double ) valIn; } } class Foo { private T _value; T getValue() { return _value; } static Foo getFoo() { return new Foo<>(); } public static void main(String[] args) { Foo foo = getFoo(); double value = (double) foo.getValue(); } }