枚举实现单例

不看不知道,java的枚举是很强大的,可以先搜索一下枚举的使用方法。

 

下面是使用枚举实现单例模式:

1.

public enum Singleton {
    INSTANCE {
        public void someMethod() {
            // . . .
        }
    };

    protected abstract void someMethod();
}

 

2.

public enum Elvis {
 
INSTANCE("wangfabo", 1);
 private final int id;
 private final String name;
 
Elvis(String n, int i) {
    id=i;
    name=n;
 }
 
public void leaveTheBuilding() {
    System.out.println("name:"+name+" id:"+id);;
 }
 public Elvis getInstance(){
    return INSTANCE;
 }
 }


3.

enum Singleton {
	RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);

	// 构造枚举值
	Singleton(int rv, int gv, int bv) {
		this.redValue = rv;
		this.greenValue = gv;
		this.blueValue = bv;
	}
	
	// 自定义数据域,private为了封装。
	private int redValue;
	private int greenValue;
	private int blueValue;

	public int getRedValue() {
		return redValue;
	}

	public void setRedValue(int redValue) {
		this.redValue = redValue;
	}

	public int getGreenValue() {
		return greenValue;
	}

	public void setGreenValue(int greenValue) {
		this.greenValue = greenValue;
	}

	public int getBlueValue() {
		return blueValue;
	}

	public void setBlueValue(int blueValue) {
		this.blueValue = blueValue;
	}
}

public class Demo {
	public static void main(String[] args) {
		System.out.println(Singleton.RED.getRedValue());
	}
}



使用enum关键字来实现单例模式的好处是这样非常简洁,并且无偿地提供了序列化机制,绝对防止多次实例化,即使是在面对复杂的序列化或者反射攻击的时候。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Java实现Elasticsearch的简单应用,你需要先添加Elasticsearch的Java客户端库(例如Elasticsearch Java High Level REST Client)到你的项目中。然后,你可以使用该客户端库来连接到Elasticsearch集群并执行索引、搜索和聚合等操作。 以下是一个简单的示例,展示了如何使用Java High Level REST Client来实现Elasticsearch的基本操作: 1. 添加Maven依赖: ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.15.1</version> </dependency> ``` 2. 创建Elasticsearch客户端: ```java RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); ``` 3. 创建索引: ```java CreateIndexRequest request = new CreateIndexRequest("my_index"); request.mapping("_doc", " {\n" + " \"properties\": {\n" + " \"title\": {\n" + " \"type\": \"text\"\n" + " },\n" + " \"content\": {\n" + " \"type\": \"text\"\n" + " }\n" + " }\n" + " }", XContentType.JSON); CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); ``` 4. 索引文档: ```java IndexRequest request = new IndexRequest("my_index"); request.id("1"); request.source( " {\n" + " \"title\": \"Elasticsearch Introduction\",\n" + " \"content\": \"Elasticsearch is a distributed search engine.\"\n" + " }", XContentType.JSON); IndexResponse response = client.index(request, RequestOptions.DEFAULT); ``` 5. 搜索文档: ```java SearchRequest request = new SearchRequest("my_index"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchQuery("content", "distributed")); request.source(sourceBuilder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); ``` 以上是一个简单的Java示例,演示了如何使用Java High Level REST Client来实现Elasticsearch的索引和搜索操作。你可以根据自己的需求进一步学习和了解Elasticsearch的其他功能和用法。 关于枚举实现单例模式的问题,以下是一个Java中使用枚举实现单例模式的示例: ```java public enum Singleton { INSTANCE; // 添加其他成员变量和方法 public void doSomething() { // 单例对象的操作 } } ``` 在这个示例中,我们定义了一个枚举类Singleton,它只有一个枚举实例INSTANCE。你可以在枚举类中添加其他成员变量和方法来实现单例对象的操作。通过访问Singleton.INSTANCE,你可以获取到单例对象的实例,并调用其方法。 这种方式是Java中推荐的实现单例模式的方式之一,它保证了线程安全和唯一实例性质。同时,枚举类还提供了序列化和反序列化的支持,避免了反射和反序列化创建新的实例。因此,使用枚举实现单例模式是一种简洁、安全且可靠的方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值