<分区>
有几次我想做这样的事情时遇到了一些问题:
interface MyInterface
{
public Validator<this.class> getValidator();
}
class MyInstance implements MyInterface
{
public Validator<this.class> getValidator()
{
//do stuff
}
}
因此,为了能够将对具体类的引用作为泛型参数传递,当您拥有作用于当前类的类时,通常需要这样做。一个简单的解决方案是使用 ?类型,但是当您随后需要访问类本身的值时(例如,如果您需要执行类似 getValidator().validateForm().getField()
的操作)或者即使您想要使用链式方法(如 StringBuilder.append()
)子类化一个类
我通常不得不这样做的方式:
interface MyInterface<T>
{
public Validator<T> getValidator();
}
class MyInstance implements MyInterface<MyInstance>
{
public Validator<MyInstance> getValidator()
{
//do stuff
}
}
但是这样很丑陋,而且很容易不小心将错误的类作为参数。
还有其他解决方案吗?
编辑:“有没有办法用类型变量引用当前类型?”提供的答案目前没有解决这个问题(除了 Scala 的回答)