2016-02-10 3 views
1

Я понимаю, что в java вы можете написать внешний класс, который можно импортировать в скрипт, а затем запустить, что позволяет использовать этот класс в нескольких разных местах.Область применения 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-файлов)?

+0

Вам не нужно создавать экземпляр класса для вызова методов 'static'. Взгляните на это: http://stackoverflow.com/questions/942326/calling-static-method-on-a-class – vk239

ответ

2

В случае, о котором вы говорите, статические методы являются разумным выбором. Static methods/members принадлежат самому классу, а не одному экземпляру. Некоторые относятся к этому как принадлежащие ко всем экземплярам класса, но это не совсем то же самое значение.

Статические методы предназначены для того, чтобы быть апатридом (это означает, что они не зависят ни от чего другого, кроме того, что они даны, и будут каждый раз выдавать один и тот же вывод для данного ввода). Как и HopefullyHelpful, вы вызываете/получаете доступ к статическим членам/методам с помощью имени класса, а не имени instancename, потому что они не требуют экземпляра.

+0

Ничего себе, я даже не знал о такой вещи, которая собирается сэкономить мне много печатания благодаря кучу – Trent

-2

Что вы имеете в виду статические методы. Вы можете создать класс со статическими методами, которые затем могут быть вызваны без создания экземпляра класса.

Вообще говоря, это плохой объектно-ориентированный дизайн программирования и указывает на необходимость переосмыслить ваш дизайн.

+5

Статические классы/методы не являются * плохими * сами по себе, но они предназначены для очень укажите прецедент (например, библиотеку алгоритмов без состояния, такую ​​как java.lang.Math). – callyalater

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); 
    } 
} 
Смежные вопросы