是否可以创建一个不包含在任何类中的方法?

时间:2014-07-04 18:31:45

标签: java class methods

我读了一个声明,声明" 一个方法被定义并包含在Java类中。"但是,我很好奇这个陈述是多么明确。

是否有可能在Java中创建一个不包含在类中的方法(函数)?

5 个答案:

答案 0 :(得分:4)

直到Java-8,关于所有方法的声明"包含在Java类中#34;完全是真的。然而,随着Java-8中lambda的引入,还有一个代码可能出现的地方 - 一个lambda函数。与仍然是类的匿名类不同,lambdas是一种不同类型的代码托管实体。

Java-8增加了另一个可以出现方法的地方 - 一个接口。新的语言添加允许您指定接口内方法的默认实现。这并不意味着你可以调用它,但你当然可以在Java-8接口中托管一些可执行代码。

至于"独立"方法go,没有语言添加允许它们:所有可执行逻辑必须是其他中的容器,但不一定是类。

答案 1 :(得分:2)

好吧......不完全。你不能在编译时这样做,但你可以动态地完成它。您可以动态地向类中添加字节。如果您了解Java虚拟机规范,那么您可以这样做,但我认为您也可以使用Apache的BCEL来实现它:

http://jakarta.apache.org/bcel/index.html

还有其他选择。让你的课抽象,不要实现那个方法。制作一个界面。但是,是的,您可以为方法创建字节码,并在运行时将其绑定到类。

答案 2 :(得分:0)

不,方法是Class的函数,必须在Class中创建。

在课堂之外,他们是非法的。

答案 3 :(得分:0)

  

但是,我很好奇这句话是多么明确。

这是非常明确的。

不,不可能。这些方法应该在课堂上。

如果你在逻辑上思考,那么你可以发现自己在课外没有任何东西。所以从那里你可以称呼你的方法。

答案 4 :(得分:0)

不,这是不可能的。因为Java始终是面向对象的,所以无论何时运行程序,它都会在类内部运行,以便更容易地创建和集成对象。但是,有一些面向对象的语言,您可以在其中创建PHP之类的方法。使用PHP,这是因为它从来不是面向对象的,而是被改变为以对象方式运行。