public class Solution { public static void main(String[] args) throws Exception { SimpleObject<String> stringObject = new StringObject<Object>(); } interface SimpleObject<T> { SimpleObject<T> getInstance(); } public static class StringObject<T> implements SimpleObject<String> { public SimpleObject<String> getInstance(){ return null; } } }