介绍
在本实验中,你将学习 Plain Old Java Objects(通常称为 POJO)及其约定。你还将了解 Java Bean 类。在本实验结束时,你将能够:
在本实验中,你将学习 Plain Old Java Objects(通常称为 POJO)及其约定。你还将了解 Java Bean 类。在本实验结束时,你将能够:
在这一步中,我们将创建一个名为 Sample
的 POJO 类。POJO 类可以以任何方式创建,不需要遵循任何约定。
// Sample POJO class
public class Sample{
public String field1;
private int field2;
double field3;
Sample(String s, int i, double d){
this.field1 = s;
this.field2 = i;
this.field3 = d;
}
public String getField1(){
return field1;
}
public double getField3(){
return field3;
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac Sample.java
在这一步中,我们将运行 Sample
类并观察其工作原理。
public class Main{
public static void main(String[] args) {
Sample sample = new Sample("field 1", 100, 123.45);
System.out.println("Field 1: " + sample.field1);
System.out.println("Field 2: " + sample.field2);
System.out.println("Field 3: " + sample.field3);
}
}
保存文件并在终端中使用以下命令运行它:
java Main
在这一步中,我们将使用 Reflection API 来查看 Sample
类的属性。Reflection API 是一个强大的工具,允许你检查和修改应用程序的行为。
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
Sample s = new Sample("f1", 0, 0.0);
try {
Map<String, Object> properties = BeanUtils.describe(s);
for (Map.Entry<String, Object> e : properties.entrySet())
System.out.println(e.getKey() + "->" + e.getValue());
} catch (Exception e) {
System.out.print(e);
}
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac -cp .:commons-beanutils-1.9.4.jar Main.java
-cp
标志用于指定类路径。:commons-beanutils-1.9.4.jar
是 commons-beanutils
包的路径。要运行编译后的文件,请使用以下命令:
java -cp .:commons-beanutils-1.9.4.jar Main
在这一步中,我们将把 Sample
POJO 类转换为一个 Java Bean 类。Java Bean 类是一个遵循某些约定和规则的 POJO。
import java.io.Serializable;
public class Sample implements Serializable{
private String field1;
private int field2;
private double field3;
public Sample(){}
public Sample(String s, int i, double d){
this.field1 = s;
this.field2 = i;
this.field3 = d;
}
public String getField1(){
return field1;
}
public void setField1(String field1){
this.field1 = field1;
}
public int getField2(){
return field2;
}
public void setField2(int field2){
this.field2 = field2;
}
public double getField3(){
return field3;
}
public void setField3(double field3){
this.field3 = field3;
}
}
在这一步中,我们将运行 Sample
类并观察其工作原理。
public class Main{
public static void main(String[] args) {
Sample sample = new Sample();
sample.setField1("field 1");
sample.setField2(100);
sample.setField3(123.45);
System.out.println("Field 1: " + sample.getField1());
System.out.println("Field 2: " + sample.getField2());
System.out.println("Field 3: " + sample.getField3());
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac Main.java
在这一步中,我们将再次使用 Reflection API 来查看 Sample
类的属性。
public class Main {
public static void main(String[] args) throws Exception {
Sample s = new Sample("f1", 0, 0.0);
try {
Map<String, Object> properties = BeanUtils.describe(s);
for (Map.Entry<String, Object> e : properties.entrySet())
System.out.println(e.getKey() + "->" + e.getValue());
} catch (Exception e) {
System.out.print(e);
}
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac -cp .:commons-beanutils-1.9.4.jar Main.java
-cp
标志用于指定类路径。:commons-beanutils-1.9.4.jar
是 commons-beanutils
包的路径。要运行编译后的文件,请使用以下命令:
java -cp .:commons-beanutils-1.9.4.jar Main
在这一步中,我们将使用序列化将 Sample
类的对象存储到文件中。序列化用于将对象转换为字节流,可以保存到磁盘或通过网络传输。
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class Main {
public static void main(String[] args) throws Exception {
Sample s = new Sample("f1", 0, 0.0);
try {
FileOutputStream fos = new FileOutputStream("sample.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(s);
oos.close();
fos.close();
System.out.println("Object has been serialized");
} catch (Exception e) {
System.out.print(e);
}
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac Main.java
使用以下命令运行编译后的文件:
java Main
在这一步中,我们将使用反序列化从文件中读取 Sample
类的对象。反序列化用于将字节流转换回对象。
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class Main {
public static void main(String[] args) throws Exception {
try {
FileInputStream fis = new FileInputStream("sample.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Sample s = (Sample) ois.readObject();
ois.close();
fis.close();
System.out.println("Object has been deserialized");
System.out.println("Field 1: " + s.getField1());
System.out.println("Field 2: " + s.getField2());
System.out.println("Field 3: " + s.getField3());
} catch (Exception e) {
System.out.print(e);
}
}
}
保存文件并在终端中使用以下命令编译它:
cd ~/project
javac Main.java
使用以下命令运行编译后的文件:
java Main
在本实验中,你学习了 POJO(Plain Old Java Object)及其在 Java 编程中的作用。你学习了如何创建一个 POJO 类,以及 POJO 类和 Java Bean 类之间的区别。你还学习了如何将 POJO 类转换为 Java Bean 类,以及如何使用 Reflection API 查看 Java Bean 类的属性。最后,你学习了如何序列化和反序列化 Java Bean 对象。