在java中没有普通的“功能”?

时间:2010-01-09 01:51:43

标签: java

在php中,您可以使用函数在全局范围内声明一个函数。

这在java中是不可能的?看起来每个函数都在类中作为方法。所以在java中一切都是OOP?没有程序代码?

10 个答案:

答案 0 :(得分:18)

“自由浮动”功能最接近的是静态函数,您可以使用类名调用该函数,例如

public class Foo {
   public static void bar(){}
}

......其他地方

Foo.bar();

你可以为此添加一些语法糖,使它看起来像你想的那样:

import static Foo.bar;

......其他地方

bar();

答案 1 :(得分:3)

是的。但是您可以定义静态方法,这些方法最终可以充当类中包含的方法,但可以在不实例化类的实例的情况下调用。也就是说,如果您在类bar中将方法static定义为Foo,则可以将其作为Foo.bar()调用。

答案 2 :(得分:3)

没错,没有程序代码,一切都是由类定义的对象(少数原始数据类型除外)。但是,您可以使用静态方法:

public class MyClass {
    public static void callMe() {
        System.out.println("HEY");
    }
}

public class MyOtherClass {
    public void someMethod() {
        MyClass.callMe();
    }
}

基于JVM的语言Scala允许您创建higher-order functions,您可以将其作为值传递。

答案 3 :(得分:3)

哦,是的,OO indeed。您可以在静态方法中编写伪程序内容。

答案 4 :(得分:3)

您可以将方法静态调用,而无需创建对象

public class MyClass{
   public static void m(){
      ...
   }
}


MyClass.m();

答案 5 :(得分:3)

扩展其他人的意思,如果你有很多这样的函数,通常将它们组合在一起的类中除了静态方法之外什么都没有,通常称为“实用程序类”。我想到的第一个例子是java.lang.Math,但还有很多其他例子。名称中包含“Util”的任何类都可能遵循这种模式。

答案 6 :(得分:1)

是的,这是正确的。 Java严格来说是OOP。

答案 7 :(得分:0)

在java世界中,无论如何,所有函数都必须在类中声明。欢迎来到OO世界=)

答案 8 :(得分:0)

是的,您可以创建静态函数,呃,方法,但是您必须对它们进行硬编码。要在运行时选择回调,您必须创建一个接口(不是函数指针,过程类型或委托),然后创建一个虚假类(尽管可能是匿名的)来“实现”它。享受制作工作!

或者,享受幽默的讽刺: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html

答案 9 :(得分:-1)

不要擅长OOP。你仍然可以定义一个公共静态方法,并像其他人提到的那样从任何地方调用它。