【问题标题】:Java Method Scope Without A Class没有类的 Java 方法范围
【发布时间】:2016-05-21 01:29:09
【问题描述】:

我知道在 java 中您可以编写一个外部类,该类可以导入到脚本中然后运行,从而允许该类在多个不同的地方使用。

我想知道是否有办法用方法做同样的事情。我发现有时我需要创建一个外部类来做一些非常小的和基本的事情,如下所示。

simpleScript.java

public class simpleScript {

    public static void main() {

        // just a date variable which I will want to format
        // but I will always one of two formats every time
        // I use a date so I need a library/class function
        Date   dateNow = new Date();

        // to use my library/class function I have to
        // initialize it first
        dateFormat localDateFormat = new dateFormat();

        // now I can use it in the main only
        String   dmyNow  = localDateFormat.dmyFormat(dateNow);
        String   timeNow = localDateFormat.timeFormat(dateNow);

    }

}

dateFormat.java

public class dateFormat() {

    public static String dmyFormat(Date dateArg) {

        SimpleDateFormat dmyStyle = new SimpleDateFormat("dd-MM-yyyy");
        String dateResult = dmyStyle.format(dateArg);

        return dateResult;

    }

    public static String timeFormat(Date dateArg) {

        SimpleDateFormat timeStyle = new SimpleDateFormat("hh:mm:ss");
        String timeResult = timeStyle.format(dateArg);

        return timeResult;

    }

}

这并没有让我很困扰,直到我需要在多种不同的方法中使用它,有时只在一个日期使用,所以我必须继续初始化类以使用其中的方法(我不想让它是一个全局类)。

是否有另一种方法可以使我的方法在没有类的情况下可重用(跨多个 java 文件)?

【问题讨论】:

标签: java class methods scope


【解决方案1】:

在您所说的情况下,静态方法是一个合理的选择。 Static methods/members 属于类本身,而不属于任何一个实例。有些人将其称为属于该类的所有实例,但这并不完全相同。

静态方法意味着是无状态的(意味着它们不依赖于其他任何东西,只依赖于给定的内容,并且每次对于给定的输入都会产生相同的输出)。就像 HopeHelpful 所说的那样,您通过类名而不是实例名调用/访问静态成员/方法,因为它们不需要实例。

【讨论】:

  • 哇,我什至不知道这样的事情会为我节省大量的打字时间,谢谢
【解决方案2】:

你可以用ClassName.functionName(parameters)调用静态方法

你不需要初始化任何东西。您只需要导入您正在使用的类。一个典型的例子是像 java.lang.Math 这样的库类,它只包含静态方法。

public class simpleScript {
    public static void main() {
        Date   dateNow = new Date();

        String   dmyNow  = dateFormat.dmyFormat(dateNow);
        String   timeNow = dateFormat.timeFormat(dateNow);
    }
}

【讨论】:

    【解决方案3】:

    您指的是静态方法。您可以使用静态方法创建一个类,然后无需创建类的实例即可调用该类。

    然而,一般来说,这是一种糟糕的面向对象编程设计,表明您需要重新考虑您的设计。

    【讨论】:

    • 静态类/方法本身并不是 bad 设计,但它们适用于非常具体的用例(即,像 java.lang.Math 这样的无状态算法库) .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多