我有一个处理一组对象的API,这些对象都扩展了没有收入字段的特定类
class Person { ... }
说我想打电话来赚钱。并非此处所有子类都有一个收入字段
class Child { ... }
class FullTimeEmployedPerson { ... }
class TrustFundKid { ... }
此过程将在后两者之一上调用#getIncome()
方法。现在,可以保证我的API永远不会传递Child
,所以我想跳过这些乐趣,只提供类似的东西
String getParsedIncome(Person person) {
return FooBar.parse(person.getIncome());
}
在现实生活中,这使我能够处理第三方API不断更改一系列子类的类和字段名称的情况,这些子类需要更新多个应用程序,而我可以将这些更改集中到一个库中并进行不可知的调用像这样从外围应用程序有什么现实的方法呢?
您必须使用反射来检查您的实例类是否具有这种方法。
If(YourChildInstance.class.getMethod("methodName") != null){ ... }else{ do nothing}