java - 关于具有相同名称的方法的多态无关类的问题?
问题描述
是否可能存在不相关类中的方法,巧合地具有相同的名称/签名而没有从另一个类或接口继承?
- 这些也可以被描述为“多态”调用吗?
- 尝试在不从父类继承的情况下多态地使用它们有什么缺点?
解决方案
您正在描述一种称为鸭子类型的情况- 类比是“如果它像鸭子一样走路并且它像鸭子一样嘎嘎叫,那么它一定是鸭子”,或者用 OO 术语来说 - 如果它有正确的方法,我们可以称之为。
然而,Java 不是这样工作的。
至少不是以任何明显的方式。
一个是围绕这个是反射。假设您有两个类A
和B
,它们都有一个doSomething()
方法。您可以Class
在运行时获取它们的对象,使用它们来获取相关method
对象,然后调用它:
public static void callSomething(Object o) throws Exception {
Class<?> clazz = o.getClass();
Method method = clazz.getMethod("doSomething");
method.invoke(o);
}
这会起作用,但您实际上是在抛弃 Java 为您提供的所有好处和保护。
除非你有非常好的理由这样做,否则我不会走那条路。
推荐阅读
- python - 如何将假期表插入主表和班次表以创建班次表
- python - 如何为烧瓶打开测试服务器?
- tensorflow - 验证精度在 2 个 epoch 后始终保持不变
- python - 如何在python中进行模板匹配后确定图像上的像素坐标?
- java - Spring data redis - Map的Hash
被检索为 Map ,如何解决这个问题? - c++ - 如何在我的 Windows Toast 通知上方隐藏 AUMI 名称
- freeradius - 如何将freeradius 3.0.21与LDAP跳转云绑定
- bootstrap-table - 另一个扩展表中的引导表扩展
- python - 散景事件宣布一个按钮点击一个情节重做工具
- linux - 如何将 cmake 生成器设置回默认的 Unix Makefiles?