public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
If a value is present, returns the value, otherwise throws NoSuchElementException.
Returns:
the non-null value described by this Optional
Throws:
NoSuchElementException – if no value is present
API Note:
The preferred alternative to this method is orElseThrow().
Optional 설명을 보다 static 옆의 <T>를 보고 관련 내용을 찾아봤다.
결론부터 말하자면 static옆의 <T>는 해당 메소드가 제네릭 메소드라는것을 컴파일러에 알려주는 역할을 한다.
<T>를 안써주면 컴파일 과정에서 어떤 타입이 들어오는지 컴파일러는 알 수 없기때문에 오류가난다.
하지만 <T>를 붙여줌으로써 컴파일러에게 제네릭 메소드라는 것을 알리기때문에 오류가 나지 않는다.
https://okky.kr/articles/689720
http://tcpschool.com/java/java_generic_various