public static void main(String[] args) throws Exception {
        SimpleObject<String> stringObject = new StringObject<Object>();

interface SimpleObject<T> {

        SimpleObject<T> getInstance();

    }

public static class StringObject<Object> implements SimpleObject<String>{...}
что определяет дженерик в интерфейсе? к чему в данном случае применяется тип String? как понял, в классе дженерики определяют тип поля класса, в ArrayList - тип содержимого как связаны Object и String в данном примере? компилируется и в таком виде SimpleObject<String> stringObject = new StringObject<Integert>();