是的,现在要实现访问者模式,您需要访问A,B和C的源,除非所有类都具有相同的签名(因此所有类都具有相同名称的wash()方法)。在这种情况下,您可以使用多态来调用正确的方法。
否则,可以在源代码级别为您无权访问的类添加功能。在Wikipedia上有关访问者模式的文章(http://en.wikipedia.org/wiki/Visitor_pattern),在Java示例下面有一个小脚注:
注意:此模式的一种更灵活的方法是创建一个包装器类,该包装器类实现定义accept方法的接口。包装器包含指向CarElement的引用,该引用可以通过构造函数进行初始化。这种方法避免了必须在每个元素上实现接口。[请参阅下面的Java
Tip 98文章]
它引用了本文:http :
//www.javaworld.com/javaworld/javatips/jw-
javatip98.html
因此,尽管有可能,但它为您要执行的小任务提供了大量类。如果我是你,我会坚持使用instanceof。



