Java或PHP中的方法丢失

7

我一直在寻找不同的编程语言来入门。我发现 Ruby 中的 method_missing 很有意思,但是在 Java 和 PHP 中没有找到相同的方法。那么 Java 或 PHP 中是否有类似于 method_missing 的东西呢?


使用 Ruby 很长时间后回到 Java,感觉像回到了 20 世纪。 - SwiftMango
3个回答

8
PHP有__call($name, array $args)。它是一个通用方法,用于处理调用实例未定义的方法的情况。在PHP >= 5.3中还有__callStatic($name, array $args),其功能基本相同,只不过是在类级别上操作(显然)。
class MyClass
{
    public function __call($name, array $args)
    {
        echo "You tried to call $name(".implode(',',$args)."). Silly user.";
    }
}

$k = new MyClass();
$k->doSomething(1,2,3); // You tried to call doSomething(1,2,3). Silly user.

在Java中,相应的内容要复杂一些,它涉及到一个称为代理类的东西。可以在这里找到教程--这里的示例有点多,无法概括。


1
在Java中,您可以使用接口、代理和反射来实现某些功能。

方法丢失并不意味着检查方法是否存在。 - xdazz
在 Ruby 中,可以使用 respond_to?(:method_name) 来检查对象是否存在某个方法。 - Prabesh Shrestha

1
在PHP中,您可以使用魔术方法__call()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接