How to set constraints on generic types in Java?

constraints, generics, java

Solution

Read also the discussion here: Generics and sorting in Java

Short answer, the best you can get is:

class ListObject<T extends Comparable<? super T>> {
    ...
}

But there is also reason to just use:

class ListObject<T extends Comparable> {
    ...
}

Problem

I have a generic class: ``` public class ListObject<T> { // fields protected T _Value = null; // .. } ``` Now I want to do something like the following: ``` ListObject<MyClass> foo = new ListObject<MyClass>(); ListObject<MyClass> foo2 = new ListObject<MyClass>(); foo.compareTo(foo2); ``` Question: How can I define the `compareTo()` method with resprect to the generic `T`? I guess I have to somehow implement a constraint on the generic `T`, to tell that `T` implements a specific interface (maybe `Comparable`, if that one exists). Can anyone provide me with a small code sample?

Original source

Related problems