1
7
我认为简单的答案是你不能这样做。如果某个类属性的类型依赖于类型参数,则必须在类级别声明该参数。我不认为它“有意义”任何其他方式。
如果
所以为了让这个回到你想在这里做的事情,举个例子
我甚至不认为您可以通过显式的动态类型检查来实现这一点。(我认为类型擦除意味着
不,真正的解决办法是
并移除方法级类型参数的声明
|
2
2
这里面有很多未经检查的警告,但原则上没有必要保留
下面的一个快速测试表明,对于实现可比较的类(如integer和string)
|
3
1
这样想(我要说的不是事实)。但它说明了为什么你需要做你需要做的事情):
当发生这种情况时,编译器(不会真的做我要说的事情!)生成以下代码:
如果您能够在不参数化类的情况下对实例变量/方法进行参数化,那么上面的内容(这不是实际情况!)不会起作用的。 您所要做的应该可以使用静态方法,但我不认为这是您想要的。 你能解释一下为什么你要做你想做的代码吗?也许我们可以找到一个更好的方法来做你想做的事情,这在语言中是有效的。 |
4
1
我相信下面的内容会达到你想要的效果(比较强的输入法)。这将阻止人们将不在接口中的可比较对象添加到列表中,并允许多个实现。
编辑: 我知道这可能很明显;但是如果您不希望类是通用的,那么这个解决方案也可以用于:
|
5
1
我会这样做(我是以列表或数组的形式进行的),除非您真正需要实例变量/方法:
|
6
0
无法直接表示您对变量所需的类型约束。你可以引入一种新的类型来解决这个问题。
但是,在一段私有代码中,没有必要使用非常安全的类型。通用是帮助你澄清你的类型,而不是混淆它们。 |
7
-1
|