没有类的Java方法范围

时间:2016-02-10 15:41:43

标签: java class methods scope

据我所知,在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;

    }

}

这并不会让我感到烦恼,直到我需要在多种不同的方法中使用它,有时只用于一个日期,所以我必须继续初始化类以使用其中的方法(I不想让它成为一个全球级的。)

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

3 个答案:

答案 0 :(得分:2)

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

静态方法意味着无状态(意味着它们不依赖于任何其他东西,除了它们给出的内容,并且每次为给定的输入产生相同的输出)。就像HopefullyHelpful所说,你通过classname而不是instancename调用/访问静态成员/方法,因为他们不需要实例。

答案 1 :(得分:0)

您可以使用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);
    }
}

答案 2 :(得分:-2)

您所指的是静态方法。您可以使用静态方法创建一个类,然后可以在不创建类实例的情况下调用它。

但是,一般来说,这是一个糟糕的面向对象的编程设计,表明你需要重新思考你的设计。