Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单例类可以是泛型的吗?_Java_Design Patterns_Singleton - Fatal编程技术网

Java 单例类可以是泛型的吗?

Java 单例类可以是泛型的吗?,java,design-patterns,singleton,Java,Design Patterns,Singleton,我想为我的应用程序提供一个rest客户端。由于单例用于内部或外部资源的集中管理,因此它们为自己提供了一个全局访问点。我认为rest客户机应该作为一个单例类实现 我可以用一种通用的方式实现这个类,这样我就可以控制我希望类的方法返回的对象的类型 我正在寻找类似于: public class JersyRestClient <T> implements RestClient { private static JersyRestClient instance = null;

我想为我的应用程序提供一个rest客户端。由于单例用于内部或外部资源的集中管理,因此它们为自己提供了一个全局访问点。我认为rest客户机应该作为一个单例类实现

我可以用一种通用的方式实现这个类,这样我就可以控制我希望类的方法返回的对象的类型

我正在寻找类似于:

public class JersyRestClient <T> implements RestClient
{
    private static JersyRestClient instance = null;

    private JersyRestClient()
    {

    }

    public static JersyRestClient getInstance()
    {
        if (instance == null)
        {
            synchronized (JersyRestClient.class)
            {
                if (instance == null)
                {
                    instance = new JersyRestClient();
                }
            }
        }
        return instance;
    }

    public T getContent(final String resourceUrl)
    {
        //get content
        //return T
    }

}
public类JersyRestClient实现RestClient
{
私有静态JersySrestClient实例=null;
私人JersylestClient()
{
}
公共静态JersySrestClient getInstance()
{
if(实例==null)
{
已同步(JersyRestClient.class)
{
if(实例==null)
{
instance=new-JersyRestClient();
}
}
}
返回实例;
}
public T getContent(最终字符串resourceUrl)
{
//得到满足
//返回T
}
}
JersyRestClient
没有多大意义。 您将在
getInstance()
中返回特定的内容。会是什么

  • 原始类型(
    JersyRestClient
    )。在这种情况下,您可以备用
  • 某些特定类型
    JersyRestClient
    。可能,但没有多大意义
  • 您可以执行
    JersyRestClient getInstance()
    ,这将导致转换为
    JersyRestClient
类型参数
T
允许参数化
JersyRestClient
的实例。如果您只有一个实例,那么没有什么可以参数化的。

JersyRestClient
没有多大意义。 您将在
getInstance()
中返回特定的内容。会是什么

  • 原始类型(
    JersyRestClient
    )。在这种情况下,您可以备用
  • 某些特定类型
    JersyRestClient
    。可能,但没有多大意义
  • 您可以执行
    JersyRestClient getInstance()
    ,这将导致转换为
    JersyRestClient

类型参数
T
允许参数化
JersyRestClient
的实例。如果您只有一个实例,那么就没有什么可以参数化的。

我只会说它是反变的或抽象的。

我只会说它是反变的或抽象的。

为什么不可能呢?我认为rest客户端应该作为一个单例类来实现。-Singleton是。我完全同意lexicore的观点,选择Singleton是一个你不应该这样做的决定,因为在以后的开发阶段,其影响可能不仅仅是烦人。但是,如果您决定使用单例,请使用
enum
。这是在Java中创建Singleton最有效的方法,比使用任何其他方法来实现该模式更简单,也更不容易出错。在这里查看关于该主题的更多信息:为什么不可能?我认为rest客户端应该作为Singleton类来实现。-Singleton是。我完全同意lexicore的观点,选择Singleton是一个你不应该这样做的决定,因为在以后的开发阶段,其影响可能不仅仅是烦人。但是,如果您决定使用单例,请使用
enum
。这是在Java中创建Singleton最有效的方法,比使用任何其他方法实现该模式更简单,更不容易出错。有关该主题的更多信息,请查看此处: