是否可以使用相同的名称加载Java中的两个不同类中的一个?
发布时间:2020-12-15 04:54:08 所属栏目:Java 来源:网络整理
导读:我有很多代码在Foo上调用静态方法,如“Foo.method()”.我有两种不同的Foo实现,并希望根据具体情况使用其中一种.在伪代码中: 文件Foo1.java class Foo1 implements Foo { public static int method() { return 0; }} 文件Foo2.java class Foo2 implements Fo
我有很多代码在Foo上调用静态方法,如“Foo.method()”.我有两种不同的Foo实现,并希望根据具体情况使用其中一种.在伪代码中:
文件Foo1.java class Foo1 implements Foo { public static int method() { return 0; } } 文件Foo2.java class Foo2 implements Foo { public static int method() { return 1; } } 文件Main.java if(shouldLoadFoo1()) { Foo = loadClass("Foo1"); } else { Foo = loadClass("Foo2"); } 这可能与Java元编程有关吗?我无法完全围绕所有动态类加载文档.如果没有,那么做我想做的最好的方法是什么? 解决方法
基本上你有两个具有相同接口但实现不同的类,使用接口做它不是更好吗?
在您的主类中,根据您使用适当实例构建类的环境. FooInterface foo; MainClass (FooInteface foo,other fields) { this.foo = foo; } .... 然后只使用他们的foo. 另一种方法是使用AspectJ,在每个Foo.method调用上定义一个切点,在切点的建议中有你的if(shouldLoadFoo1()){Foo1.method()}等等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |