本人在最近的项目中遇到一个问题,需要往一个接口方法中增加参数,但由于项目已经稳定运行了很长一段时间,不可能去改造现有方法,只能通过新增接口的方式去解决。
对于新增的接口,现有程序就要判断类实例究竟属于哪个接口,然后进行调用,关键点是通过关键字 instanceof 进行判断。下面是一些测试代码,请大家参考。
-示例代码:
IFaceA.java
public class ClassB implements IFaceB {
@Override
public String execute(String arg0) {
System.out.println("execute with args.........");
return "args";
}
}
IFaceB.java
public interface IFaceB {
public String execute(String arg0);
}
ClassA.java
public class ClassA implements IFaceA {
@Override
public void execute() {
System.out.println("execute........");
}
}
ClassB.java
public class ClassB implements IFaceB {
@Override
public String execute(String arg0) {
System.out.println("execute with args.........");
return "args";
}
}
TestMain.java
public class TestMain {
public static void main(String[] args) throws Exception {
String clsnameA="com.gzsolartech.smartforms.utils.ClassA";
Class<?> clzA = Class.forName(clsnameA);
Object objA=clzA.newInstance();
String clsnameB="com.gzsolartech.smartforms.utils.ClassB";
Class<?> clzB = Class.forName(clsnameB);
Object objB=clzB.newInstance();
System.out.println(objA instanceof IFaceA);
System.out.println(objA instanceof IFaceB);
System.out.println(objB instanceof IFaceA);
}
}
- 输出结果
true
false
false
true