`
Aga
  • 浏览: 218641 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

serializable例子一则

    博客分类:
  • J2SE
阅读更多
实现Serializable接口,编写地定义的针对transient field的加密处理方案。
package cxz.serial;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectSaver {

	public static void main(String[] args) throws Exception {
		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
				"D:\\objectFile.obj"));

		Customer obj3 = new Customer("Tom", 20, "pwd");
		out.writeObject(obj3);
		out.close();

		ObjectInputStream in = new ObjectInputStream(new FileInputStream(
				"D:\\objectFile.obj"));
		Customer somebody = (Customer) in.readObject();
		in.close();
		System.out.println(somebody);
	}

}

package cxz.serial;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Customer implements Serializable {
	private static int no;
	private String name;
	private transient String password;
	private int age;

	public Customer(String string, int i, String pwd) {
		name = string;
		age = i;
		password = pwd;
		no++;
	}

	public static int getNo() {
		return no;
	}

	public String toString() {
		return name + age + password + no;
	}

	private byte[] change(byte[] buff) {
		for (int i = 0; i < buff.length; i++) {
			int b = 0;
			for (int j = 0; j < 8; j++) {
				int bit = (buff[i] >> j & 1) == 0 ? 1 : 0;
				b += (1 << j) * bit;
			}
			buff[i] = (byte) b;
		}
		return buff;
	}

	private static final long serialVersionUID = -5990189113322816258L;

	private void readObject(ObjectInputStream in) throws IOException,
			ClassNotFoundException {
		in.defaultReadObject();
		byte[] buff = (byte[])in.readObject();
		password = new String(change(buff));
		no = in.readInt();
	}

	private void writeObject(ObjectOutputStream out) throws IOException {
		out.defaultWriteObject();
		out.writeObject(change(password.getBytes()));
		out.writeInt(no);
	}

}
1
0
分享到:
评论

相关推荐

    Laravel开发-serializable-values

    Luminark的"serializable-values"包则进一步扩展了这一功能,提供了一种更加灵活和安全的方式来处理可序列化的值。这个包可能包含了自定义的序列化策略,使得开发者可以控制哪些属性应该被序列化,哪些不应该。此外...

    使用SerializableDemo

    以下是一个简单的例子: ```java MyClass obj = new MyClass(); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.ser"))) { oos.writeObject(obj); } catch (IOException e) { ...

    PHP自定义序列化接口Serializable用法分析

    让我们通过一个具体的例子来分析PHP自定义序列化接口Serializable的用法。首先,我们定义一个实现了Serializable接口的类,这个类叫做obj。在这个类中,我们定义了一个私有成员变量$data用于存储数据,以及一个成员...

    解析Android中的Serializable序列化

    `Serializable`则更适合于本地存储或网络传输。 总之,`Serializable`在Android开发中扮演着关键角色,特别是在处理数据持久化和跨进程通信时。了解和熟练掌握这一机制对于提升应用的健壮性和可维护性至关重要。

    java例子 详细的程序代码

    这个“java例子”压缩包提供了一系列的程序代码示例,对于初学者来说是极好的学习资源。下面,我们将深入探讨Java编程的一些核心概念和常用技术。 1. **面向对象编程(OOP)**:Java的核心特性是面向对象,它将数据...

    java导出例子

    下面是一个简单的 Java 导出数据到文本文件的例子: ```java import java.io.*; public class ExportExample { public static void main(String[] args) { String filePath = "output.txt"; String content ...

    c#remoting简单例子

    1. **创建远程对象**:在服务器端定义一个类,标记为`[Serializable]`,以允许对象序列化和反序列化。然后,使用`[System.Runtime.Remoting.Services.RemotingService]`和`[System.Runtime.Remoting.Metadata.W3cXsd...

    java web 主流框架整合开发jsp+javabean例子

    Hibernate则是一个强大的ORM(Object-Relational Mapping,对象关系映射)工具,简化了数据库操作,使开发者可以使用Java对象直接操作数据库。 整合这些框架,我们可以将JSP作为视图层,JavaBean作为模型层,而...

    axis web services 例子

    标题 "Axis Web Services 例子" 指向的是一个关于使用Apache Axis框架创建Web服务的实际应用实例。Apache Axis是开源的Java库,专门用于构建和部署Web服务,它简化了SOAP(简单对象访问协议)消息的处理。在这个例子...

    简单的C# Remoting例子

    2. **实现远程接口**:创建一个类实现该接口,并添加`[Serializable]`和`[RemotingConfiguration]`特性,以表明它是远程对象。 ```csharp [Serializable] [RemotingConfiguration(RemoteObjectLifetime = ...

    一个jsp+javabean完整例子代码

    【标题】"一个jsp+javabean完整例子代码"展示了如何在Web开发中结合使用JavaServer Pages (JSP) 和 JavaBeans 技术。JSP是用于构建动态Web应用程序的服务器端技术,而JavaBeans是一种组件模型,允许开发人员创建可...

    Python json 错误xx is not JSON serializable解决办法

    在这个例子中,我们创建了一个简单的`User`类,并定义了一个`UserEncoder`类来序列化此类的实例。我们同样重写了`default`方法,当检测到`obj`是`User`类的实例时,返回用户的名称。 #### 八、总结 通过自定义序列...

    深入探索Java对象的序列化

    Serializable有一个子接口Externalizable,实现Externalizable接口的类可以自行控制对象序列化荷反序列化过程。 一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。 实现了序列化接口的类,如果...

    自己写的一个序列化和反序列化的例子

    在Java中,如果你想要一个对象能够被序列化,那么这个类需要实现`java.io.Serializable`接口。这个接口没有定义任何方法,只是一个标记接口。当你序列化一个对象时,Java会把该对象的所有属性(包括其引用的对象)都...

    序列化与反序列化例子

    在这个例子中,我们定义了一个名为`User`的类,实现了`Serializable`接口。然后在`main`方法中,我们创建了一个`User`对象并将其序列化到名为"user.ser"的文件中。接着,我们从文件中反序列化这个对象,恢复了其原有...

    socket objectoutputstream 传对象 例子

    而ObjectOutputStream则是一个序列化流,用于将Java对象转换为字节流,以便通过网络传输。 首先,我们来理解Socket。Socket是Java的java.net包中的类,它主要用于网络编程,创建TCP连接。当你想要在一个应用程序中...

    序列化、反序列化图文例子

    在Java中,我们可以使用`java.io.Serializable`接口来标记一个类是可序列化的。当一个对象需要序列化时,Java的`ObjectOutputStream`类可以用来写入对象的字节表示。例如: ```java import java.io.*; class ...

    RMI学习例子

    这个RMI学习例子是一个很好的实践项目,可以帮助开发者深入理解Java RMI的工作机制,并掌握如何在实际项目中使用RMI进行分布式系统开发。通过分析和运行这个例子,你可以了解如何创建、注册远程对象,以及如何在不同...

    remoting 例子

    在实现Remoting时,我们首先需要创建一个可序列化的远程对象,并标记为[Serializable]。然后,我们使用[RemotingServices]和[MarshalByRefObject]类将对象暴露为远程对象。在服务器端,我们需要启动一个服务器,监听...

Global site tag (gtag.js) - Google Analytics