相关疑难解决方法(0)

如何创建单例类

在java中创建单例类的最佳/正确方法是什么?

我发现的一个实现是使用私有构造函数和getInstance()方法.

package singleton;

public class Singleton {

    private static Singleton me;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (me == null) {
            me = new Singleton();
        }

        return me;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在以下测试用例中实现失败了

package singleton;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Test {

    /**
     * @param args
     * @throws NoSuchMethodException
     * @throws SecurityException
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     * @throws InstantiationException
     * @throws IllegalArgumentException
     */
    public static void main(String[] args) throws SecurityException,
            NoSuchMethodException, IllegalArgumentException,
            InstantiationException, IllegalAccessException, …
Run Code Online (Sandbox Code Playgroud)

java singleton design-patterns

31
推荐指数
1
解决办法
5万
查看次数

静态类vs单例类

我知道这个话题已被一遍又一遍地讨论和杀死,但我仍有一个疑问,我希望有人可以帮助我或指导我在SO上预先存在的帖子.

在传统的C中,静态变量存储在数据段中,局部变量存储在堆栈中.与局部变量相比,我认为这会使静态变量的存储和维护成本更高.对?

当试图用Java或C#来理解时,与单例类相比,这对于静态类是不利的吗?由于整个类在类初始化之前被加载到内存中,所以除非我们有小的内联函数,否则我看不出它有什么优势.

我喜欢Singleton课程,并且不愿意看到它成为一种反模式,我仍然在寻找它带来的所有优点......然后松散于其他人的线程安全论证.

-Ivar

java singleton

5
推荐指数
1
解决办法
4058
查看次数

在Java中初始化复杂静态成员的最佳方法是什么?

我的目标是Properties在我的类中有一个私有静态对象,在创建Properties我的应用程序所需的其他对象时充当默认对象.当前的实现如下所示:

public class MyClass {
    private static Properties DEFAULT_PROPERTIES = new Properties();

    static {
        try {
           DEFAULT_PROPERTIES.load(
               MyClass.class.getResourceAsStream("myclass.properties"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

看着它,它有效,但感觉不对.

你会怎么做?

java static-members

1
推荐指数
2
解决办法
734
查看次数

标签 统计

java ×3

singleton ×2

design-patterns ×1

static-members ×1