利用列舉解決java反射對單例的破壞

2021-09-02 17:32:53 字數 958 閱讀 5706

定義列舉:

enum type

},b

},c

},d

};public abstract string gettype();

}

列舉可以重寫gettype()方法,可以根據各個列舉自己的業務重寫該方法。

下面貼出本人的**:

工具類:

public class toloweroperation implements ioperation 

public static ioperation newinstance()}}

return addoperation;

}@override

public string getdata(string values, object condition)

return returnvalue;

}}

工具類中重寫介面方法,並定義單例模式。

列舉類:

public enum operationenums 

},//全部轉小寫操作

toloweroperationenum()

};public ioperation operation;

public ioperation operationenum()

/*** 定義獲取各個操作類例項

* @return

*/public abstract ioperation getinstance();

public ioperation getoperation()

public void setoperation(ioperation operation)

}

本人實現的功能就是用列舉管理各個工具類,也可以將各個工具類的邏輯寫在列舉中。

列舉實現同一介面。

單例 反射 列舉

單例模式 構造方法私有 提供公開的靜態方法返回該類唯一的例項 反射 jvm在進行類載入時,會產生類對應的類物件 類物件 包含了乙個類所有資訊的物件 類的物件 根據類的類物件包含的資訊建立出來的物件 jvm拿到類物件可以建立類的物件 訪問屬性 呼叫方法 所有的類物件都是class型別的物件,該型別的物...

readResolve 解決反射破壞單例

具體的操作和測試在單例的部落格中都有提到 單例模式的幾種寫法 單例的寫法和測試結果此片文章不再演示,直接去找readresolve 是怎樣防止破壞單例的。在測試 中用到了 objectinputstream 進入到這個 中,找到 片段 走到readobject 方法中。在readobject 方法中...

列舉單例模式如何防止反射攻擊

關於單例模式,相信大家都所有了解,比較經典的實現有餓漢式 借助內部類 雙重鎖檢測,這些實現可以保證執行緒安全,但是在某些特殊情況下並不能夠保證僅僅只有乙個單例,因為像序列化 反射攻擊等往往可以生成新的例項物件,本文將重點分析列舉單例模式如何防止反射攻擊。列舉單例 public enum single...