实现具有参数的方法的Java类,该参数是接口中指定的子类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了实现具有参数的方法的Java类,该参数是接口中指定的子类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1616字,纯文字阅读大概需要3分钟。
内容图文
![实现具有参数的方法的Java类,该参数是接口中指定的子类型](/upload/InfoBanner/zyjiaocheng/744/3ddd6750b2cd4055aa5392e65d8f36ae.jpg)
我在掌握仿制药时遇到了一些麻烦.我已经阅读了Oracle关于泛型的教程,它似乎没有解决我的问题.我也不知道在找到答案时要搜索什么.
假设我有以下代码:
public abstract class Buff<V> {
public V value;
{
public interface Buffable<V> {
public void buff(Buff<V extends Buff> buff);
}
public class DoubleBuff extends Buff<double> {
public double value;
}
public class DoubleBuffable implements Buffable<DoubleBuff> {
public void Buff(DoubleBuff buff) {
//implementation
}
}
我希望能够创建继承Buff并具有成员“value”的类,但指定value的类型(请参阅DoubleBuff).我还想使用输入参数定义实现buff方法的类,该输入参数属于Buff的子类型.
DoubleBuffable是一个实现Buffable的类,但是需要输入DoubleBuff而不是StringBuff.
我是否正确表达了我的仿制药?
解决方法:
首先是语法.声明:
public interface Buffable<V> {
public void buff(Buff<V extends Buff> buff);
}
应该:
public interface Buffable<V extends Buff> {
public void buff(Buff<V> buff);
}
您想要的类型变量应该在类声明中指定.
但是你说:
I also want to define classes that implement the buff method using an input parameter that is of a subtype of Buff.
这样,以下声明将更适合您的声明:
public interface Buffable<V extends Buff<?>> {
public void buff(V buff);
}
您可能想要更改<?>部分如果您需要更具体的Buff类型.
最后,其他所需的更改和最终的类:
public abstract class Buff<V> {
public V value;
}
public interface Buffable<V extends Buff<?>> {
public void buff(V buff);
}
// instead of primitive types, you should use their wrappers: double-->Double
public class DoubleBuff extends Buff<Double> {
public double value;
}
public class DoubleBuffable implements Buffable<DoubleBuff> {
public void buff(DoubleBuff buff) {
//implementation
}
}
内容总结
以上是互联网集市为您收集整理的实现具有参数的方法的Java类,该参数是接口中指定的子类型全部内容,希望文章能够帮你解决实现具有参数的方法的Java类,该参数是接口中指定的子类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。