作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 SingletonA
和 SingletonB
,这些类在混淆的 jar 文件中。它们不实现相同的接口(interface),也不是同一个父类(super class)的子级,但它们确实具有相似的特性,这是最初的程序员所忽略的。
我希望能够将它们作为参数传递给这样的方法:
public void method(SingletonObject singleton) {
//do stuff with singleton
}
但是,我能想到的唯一可行的方法是:
public void method(Object singleton) {
if(singleton instanceof SingletonA) {
SingletonA singletonA = (SingletonA) singleton;
// do stuff with singletonA
}
else if(singleton instanceof SingletonB) {
SingletonB singletonB = (SingletonB) singleton;
//do exact same stuff with singletonB
}
else {
return;
}
}
既然底部的例子很糟糕,我该怎么做才能让它看起来更像顶部。
最佳答案
如果您知道这两个不同的类存在某种方法,那么您可以使用反射
public void method(Object singleton) {
Class<?> clazz = singleton.getClass();
Method m;
try {
m = clazz.getDeclaredMethod("someCommonMethod");
//m.setAccessible(true);
m.invoke(singleton);
} catch (Exception e) {
e.printStackTrace();
}
}
关于java - 包装不可编辑的单例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765406/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!