gpt4 book ai didi

java - 你能引用 'this' 类作为通用参数吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:49 24 4
gpt4 key购买 nike

<分区>

有几次我想做这样的事情时遇到了一些问题:

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 的回答)

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com