平时每次用到对象的时候都是去new,好像也没什么别的方式了。
后来查了下,java创建对象有好多种方式:

先写一个POJO;
  1. package com.bizi.core;
  2. public class User {
  3. private String username = "bizi";
  4. private String password = "pass";
  5. public String getUsername() {
  6. return username;
  7. }
  8. public void setUsername(String username) {
  9. this.username = username;
  10. }
  11. public String getPassword() {
  12. return password;
  13. }
  14. public void setPassword(String password) {
  15. this.password = password;
  16. }
  17. }

1.调用构造方法创建对象:
  1. @Test
  2. public void testNew(){
  3. User user = new User();
  4. System.out.println(user.getUsername());
  5. }
2.使用反射的方式创建对象:
  1. @Test
  2. public void testReflect() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
  3. Class clazz = Class.forName(User.class.getName());
  4. Object object = clazz.newInstance();
  5. if(object instanceof User){
  6. User user = (User)object;
  7. System.out.println(user.getPassword());
  8. }
  9. }
3.使用对象的clone()的方法:
源始类需要实现Cloneable:
  1. package com.bizi.core;
  2. public class User implements Cloneable{
  3. private String username = "bizi";
  4. private String password = "pass";
  5. public Object clone()throws CloneNotSupportedException{
  6. return super.clone();
  7. }
  8. public String getUsername() {
  9. return username;
  10. }
  11. public void setUsername(String username) {
  12. this.username = username;
  13. }
  14. public String getPassword() {
  15. return password;
  16. }
  17. public void setPassword(String password) {
  18. this.password = password;
  19. }
  20. }

  1. @Test
  2. public void testClone() throws CloneNotSupportedException {
  3. User user1 = new User();
  4. User user2 = (User) user1.clone();
  5. user1.setPassword("new password");
  6. System.out.println(user2.getPassword());
  7. }
4.使用反序列化机制:
  1. @Test
  2. public void testSerializable() throws IOException, ClassNotFoundException {
  3. User user = new User();
  4. String file = "C:/User.txt";
  5. ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File(file)));
  6. oo.writeObject(user);
  7. oo.close();
  8. ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(file)));
  9. User newUser = (User) ois.readObject();
  10. ois.close();

  11. System.out.println(newUser == user);
  12. System.out.println(newUser.getPassword());
  13. }



来自为知笔记(Wiz)


posted on 2015-11-04 18:06  bishion  阅读(168)  评论(0编辑  收藏  举报