2016-07-13 3 views
0

У меня есть один класс (класс util) для генерации пароля (он имеет только один публичный статический метод). Здесь возможны два пути: Для того, чтобы сделать его абстрактным, так что никто не может создать свой экземплярРеферат против Нет подхода к примеру?

public abstract class PasswordGenerator { 

    public static String randomstring(int lo, int hi) { 
    // Some logic , doesn't matter 
     return ""; 
    } 
} 

или сделать его конструктор private. Итак, что лучше всего подходит для этого?

public class PasswordGenerator { 

    private PasswordGenerator() { 

    } 

    public static String randomstring(int lo, int hi) { 
    // Some logic , doesn't matter 
    return ""; 
    } 
} 

Итак, что лучше всего подходит для этого?

+0

что вы хотите достичь этим?! –

+0

Есть ли у java статические классы? Dang –

+1

Возможный дубликат [Статические классы в Java] (http://stackoverflow.com/questions/7486012/static-classes-in-java) – Philipp

ответ

1

Сделайте как класс final, так и конструктор private.

С ключевым словом final вы четко выражаете намерение, чтобы класс не был унаследован. С конструктором private вы четко выражаете намерение, что класс не сделан instanciated.

public final class PasswordGenerator { 

    private PasswordGenerator() {} 

    public static String randomstring(int lo, int hi) { 
    // Some logic , doesn't matter 
    return ""; 
    } 
} 
3

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

Наличие класса, способного к созданию экземпляра, является незначительной проблемой.

Но в этом SO thread вы можете найти обходное решение, которое использует частный конструктор в сочетании с окончанием класса.