Еще одна вещь, которую вы могли бы сделать, это определить оператор сравнения (на самом деле, здесь оператор разности), чтобы иметь возможность сравнивать элементы типа T. Сам по себе компилятор не может действительно знать, что вы имеете в виду, когда пишете value1 != value2
За исключением случаев, когда оператор был определен ранее.
Чтобы определить оператора, вы должны использовать
public operator!=(T a, T b) {
// Comparison code; returns true or false
}