Если вы хотите, чтобы класс содержал только Object1 или только Object2 и больше ничего, вы можете объединить два других ответа:
interface ObjInterface {
// may be empty
}
public class MyClass<T extends ObjInterface> {
private List<T> myList = new ArrayList<>();
public void addList(T o) {
myList.add(o);
}
}
MyClass<Object1> object1only = new MyClass<>();
MyClass<Object2> object2only = new MyClass<>();
и добавьте implements ObjInterface
к определениям Object1 и Object2.
Если вы добавляете методы, общие для обоих классов, в ObjInterface
, вы можете вызывать эти методы для T
объектов в MyClass
, поскольку они гарантированно являются подклассом ObjInterface
.