Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以创建一个不包含在任何类中的方法?_Java_Class_Methods - Fatal编程技术网

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

Java 是否可以创建一个不包含在任何类中的方法?,java,class,methods,Java,Class,Methods,我读到一条语句,它说“一个方法是在Java类中定义和包含的。”但是,我很好奇这条语句有多明确 是否有可能在Java中创建不包含在类中的方法(函数)?否,方法是类的函数,必须在类中创建 在课外,他们是非法的 但是,我很好奇这个说法有多明确 这是非常明确的 不,这是不可能的。方法应该在类中 如果你也有逻辑思维,那么你会发现在你的课堂之外什么都没有。因此,您将从何处调用您的方法。嗯……不完全是这样。您不能在编译时执行,但可以在运行时执行。您可以动态地向类添加字节。如果您了解Java虚拟机规范,您可以做

我读到一条语句,它说“一个方法是在Java类中定义和包含的。”但是,我很好奇这条语句有多明确


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

否,方法是类的函数,必须在类中创建

在课外,他们是非法的

但是,我很好奇这个说法有多明确

这是非常明确的

不,这是不可能的。方法应该在类中


如果你也有逻辑思维,那么你会发现在你的课堂之外什么都没有。因此,您将从何处调用您的方法。

嗯……不完全是这样。您不能在编译时执行,但可以在运行时执行。您可以动态地向类添加字节。如果您了解Java虚拟机规范,您可以做到这一点,但我认为您也可以使用Apache的BCEL做到这一点:


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

在Java-8之前,关于所有方法“包含在一个Java类中”的说法是完全正确的。然而,随着Java-8中lambdas的引入,还有一个地方可能会出现一段代码——lambda函数。与仍然是类的匿名类不同,lambda是一种不同的代码宿主实体

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


就“独立”方法而言,没有语言添加允许它们:所有可执行逻辑都必须是其他对象中的容器,但不一定是类。

不,这是不可能的。因为Java一直都是面向对象的,所以每当运行一个程序时,它都在一个类中运行,以便更容易地创建和集成对象。但是,有些面向对象的语言可以在类之外创建方法,例如PHP。对于PHP,这是因为它以前从未面向对象,而是被改为以对象方式操作。

您如何称呼它?每个方法都需要在类中定义,因为类之外没有其他东西。你为什么有疑问?@Dadou,因为在C#中,
struct
可以用来替换
。我认为Java中没有
struct
,但为了安全起见,我想和这里的所有专家一起检查它是否是确定的。@user3437460您可能想和专家一起检查,但像这样的简单问题往往无法从他们那里得到答案。“…它不包含在任何类中?”接口是否算数?您是说Java 8,是吗?;-)如果我没有弄错的话,lamda函数在类内部。接口是类。不管怎样,接口总是可以有方法的——只是在8之前,所有接口方法都是公共的和抽象的。@emory接口绝对不是类(无论如何都是外部反射)。就lambdas而言,它实际上相当棘手:编译器玩得很聪明,避免在lambdas未捕获时在幕后创建类。@dasblinkenlight我相信你对lamdas的看法。如果我们允许接口不是类,那么Java8就没有什么新东西了。我们总是能够创建一个不包含在任何类中的方法。@emory您介意解释一下如何实现一个不包含在任何类中的方法吗?接口方法不实现方法;匿名类内的方法实现在类内。