자바 생 성 대상 의 네 가지 방식
2 new 키워드 로 대상 만 들 기
클래스 로 더 클래스 를 호출 하고 구조 함 수 를 호출 합 니 다.
3 서열 화
3.1 응용 장소
1. 대상 을 영구적 으로 저장 하고 대상 의 바이트 순 서 를 로 컬 파일 에 저장 합 니 다. 2. 직렬 화 대상 을 통 해 네트워크 에서 대상 을 전달한다. 3. 프로 세 스 간 전달 대상 을 직렬 화 합 니 다.
3.2 직렬 화 조건
대상 이 속 한 클래스 는 Serializable 또는 Externalizable 인 터 페 이 스 를 실현 해 야 직렬 화 될 수 있 습 니 다.Serializable 인 터 페 이 스 를 실현 한 클래스 에 대해 그 서열 화 와 반 서열 화 는 기본 적 인 서열 화 방식 을 사용한다. Externalizable 인 터 페 이 스 는 Serializable 인 터 페 이 스 를 계승 한 인터페이스 이 고 Serializable 에 대한 인터페이스 이다.
확장 Externalizable 인터페이스의 클래스 는 직렬 화 와 반 직렬 화 행 위 를 완전히 스스로 제어 합 니 다. 자바. io. Object OutputStream 은 대상 의 출력 흐름 을 대표 합 니 다. 그 방법 writeObject (Object obj) 는 대상 의 직렬 화 를 실현 하고 얻 은 바이트 순 서 를 목표 출력 흐름 에 기록 할 수 있 습 니 다.자바. io. Object InputStream 은 대상 의 입력 흐름 을 대표 하 며, readObject () 방법 은 원본 입력 흐름 에서
바이트 시퀀스 를 읽 고 반 정렬 을 대상 으로 하고 되 돌려 줍 니 다.
3.3 예시 코드
packagpackage cn.hnpi;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* Serializable , Java
* */
public class Box implements Serializable {
/*
* width height
* **/
private int width;
private int height;
public Box() {// readObject
System.out.println(" ");
}
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
public static void writeBoxObject(){
Box myBox1 = new Box();
myBox1.setHeight(20);
myBox1.setWidth(50);
Box myBox2 = new Box();
myBox2.setHeight(100);
myBox2.setWidth(100);
try {
//1、 FileOutputStream
FileOutputStream fos=new FileOutputStream("foo.txt");//
//2、 ObjectOutputStream
ObjectOutputStream oos=new ObjectOutputStream(fos);// ObjectOutputStream fos
//3、
oos.writeObject(myBox1);
oos.writeObject(myBox2);
//4、 ObjectOutputStream, FileOutputStream
oos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void readBoxObject(){
try {
//1、 FileInputStream
FileInputStream fis=new FileInputStream("foo.txt");
//2、 ObjectInputStream
ObjectInputStream ois=new ObjectInputStream(fis);
//3、 , readObject stream , , ;
Object one=ois.readObject();
Object two=ois.readObject();
//4、 , Object ,
Box box1=(Box) one;
System.out.println("height:"+box1.height+" width:"+box1.width);
Box box2=(Box) two;
System.out.println("height:"+box2.height+" width:"+box2.width);
//5、 ObjectInputStream ,FileInputStream
ois.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String... args) {
writeBoxObject();
readBoxObject();
}
}
4 clone
package cn.hnpi;
public class Person implements Cloneable {
private String name;
private int age;public String getName() {
return name;
}public void setName(String name) {
this.name = name;
}public int getAge() {
return age;
}public void setAge(int age) {
this.age = age;
}@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
}
package cn.hnpi;
public class CloneTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person=new Person();
person.setAge(20);
person.setName(" ");
try {
Person clonePerson=(Person) person.clone();
clonePerson.setName(" ");
System.out.println("orignal person name="+person.getName());
System.out.println("clone person name="+person.getName());
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
5
package cn.hnpi;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;public class ReflectTest {
// 1、 NewInstance
public static void createBoxObjectUsingNewInstance() {
try {
Box box = (Box) Class.forName("cn.hnpi.Box").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}// 2、 Constructor
public static void createBoxObjectUsingConstructor() {
try {
Constructor cs = Box.class.getConstructor(null);
Box box2 = (Box) cs.newInstance(null);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}public static void main(String... args) {
createBoxObjectUsingConstructor();
createBoxObjectUsingNewInstance();
}
}:http://blog.csdn.net/gdx2011/archive/2011/01/12/6130493.aspx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.