码迷,mamicode.com
首页 > 其他好文 > 详细

23、保护性拷贝

时间:2017-08-13 09:57:17      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:ide   blog   string   span   on()   class   攻击   content   strong   

程序有可能被恶意的使用,也就是遭受攻击,对于一个类来说,如果能够合适地使用保护性拷贝,将会使得类的安全性增大,例如:

 1 class Person{
 2     private String name;
 3     public Person(String name) {
 4         this.name = name;
 5     }
 6     
 7     private Person getPerson() {
 8         return new Person(name);
 9     }
10     
11     public void setName(String name){
12         this.name = name;
13     }
14     
15     public Person say(String content){
16         System.out.println(name + " say:" + content);
17         return getPerson();
18     }
19 
20     @Override
21     public String toString() {
22         return "Person [name=" + name + "]";
23     }
24     
25     
26 }
27 
28 
29 
30 public static void main(String[] args) {
31         Person person = new Person("lay");
32         
33         Person person2 = person.say("hahah");
34         person2.setName("marry");
35         person2.say("hehehe");
36         
37         person.say("what");
38 }

如上所示,不管使用方如何setName都只是修改了拷贝出来的数据,而person的原始数据很好地被隐藏起来。

主要因素在于,java的引用机制,多个引用指向同一个内存空间,因此只要修改引用的数据就能够破坏既定的数据。因此,我们可以利用拷贝新的内容来隐藏原始数据

23、保护性拷贝

标签:ide   blog   string   span   on()   class   攻击   content   strong   

原文地址:http://www.cnblogs.com/lay2017/p/7352279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!