大佬教程收集整理的这篇文章主要介绍了选择在运行时从java扩展的子类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个类(比如B& C),它们都来自一个类(比如说A).现在我需要编写一个类(比如D),它应该在运行时从B或C动态派生.
B,C& A是通过库提供给我的类,我控制的唯一类是D类.如何针对上述约束编写D.显然,B和C来自不同的供应商,因此需要在D中覆盖不同的方法,具体取决于它的父类.
编辑
关于它是如何工作的似乎有些混乱.您想要的是您的业务逻辑在属于您的一致,稳定的API上运行.为此,您将创建一个我们称之为I的接口.现在您需要适应(A,B和C)所需的不同外部类的实现类.它可能看起来像这样:
public interface I {
void doSomething();
}
public class IA implements I {
private A a;
public IA(A a) {
this.a = a;
}
public void doSomething() {
// specific to A
a.doSomethingUnique();
}
}
// similar implementation classes for B and C
现在,您需要在运行时获取特定于当前情况的I实例.无论通知您何时在运行时使用哪个特定类都可以用于此目的.在最坏的情况下,你可以这样做:
// in some util class
public static I getI(Object obj) {
if (obj instanceof A) {
return new IA((A) obj);
} else if (obj instanceof B) {
return new IB((B) obj);
} else if (obj instanceof C) {
return new IC((C) obj);
}
// maybe throw an exception? or return a mock I implementation?
}
以上是大佬教程为你收集整理的选择在运行时从java扩展的子类全部内容,希望文章能够帮你解决选择在运行时从java扩展的子类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。