How to name classes with similar semantic in Java?
<p>For example, in C#, <code>Foo</code>, <code>Foo&lt;T&gt;</code>, <code>Foo&lt;T1, T2&gt;</code> could have similar semantic but are different classes. But in Java, I can't name classes like that. How to name them? I don't think <code>Foo</code>, <code>Foo1&lt;T&gt;</code>, <code>Foo2&lt;T1, T2&gt;</code> are appropriate. Any other suggestions?</p>

<p>Actually, I want to design some interfaces which have only one method just like <code>Runnable</code>. But <code>run</code> in <code>Runnable</code> doesn't have return value and any parameters. I want interfaces like</p>

<pre><code>public interface Runnable&lt;T&gt;{
    void run(T t);
}

public interface Runnable&lt;T, TResult&gt;{
    TResult run(T t);
}

public interface Runnable&lt;T1, T2, TResult&gt;{
    TResult run(T1 t1, T2 t2);
}
</code></pre>

<p>And so on. And I think they are better in the same package.</p>
