java – 非静态create-new-from方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 非静态create-new-from方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1184字,纯文字阅读大概需要2分钟。
内容图文
我有时会编写可以转换为 – 和 – 来自其他东西的类,我习惯将它编写为非静态转换方法和静态转换方法,例如:
class A {
B toB() {...}
static A fromB(B b) {...}
}
要么
class B {
void save(File f) {...}
static B load(File f) {...}
}
我曾经认为这是一个很好而且简单的方法,但是最近转换方法的静态性让我烦恼,例如,如果我想为可转换为-B的类型定义接口:
interface ConvertableToAndFromB {
B toB();
// ?
}
那么,除了迁移到Smalltalk之外,还有一种优雅的方式可以做到这一点,而无需将转换作为静态转换吗?
编辑
为了澄清,我意识到我可以在界面中添加一个非静态方法,例如:
interface ConvertableToAndFromB {
B toB();
void fromB(B b);
}
或者,如果我想允许不可变类型(感谢Stripling):
interface ConvertableToAndFromB<T implements ConvertibleToAndFromB<T>> {
B toB();
T fromB(B b);
}
但这需要我在我甚至可以调用它之前创建一个新的A,如:
A a = new A();
a.fromB(b);
或(对于不可变的):
A a = new A();
a = a.fromB(b);
这是我想要避免的(但没有其他解决方案).我希望有一个更好的方式.
解决方法:
通常,fromB方法将实现为复制构造函数.例如.
public class A
{
public A(B b)
{
this.someValue = b.someOtherVariable;
}
}
不幸的是,这无助于您创建一个抽象所述功能的界面.通常,可以使用单独的工厂,并且此工厂实现接口,但是这仍然不允许您以非静态方式实现对象中的方法,同时避免不必要的实例化.
内容总结
以上是互联网集市为您收集整理的java – 非静态create-new-from方法?全部内容,希望文章能够帮你解决java – 非静态create-new-from方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。