`
log_cd
  • 浏览: 1100318 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 对象转换与匿名内部类

阅读更多
一、对象操作
1.序列化与反序列化

private Blob msg; 
private Serializable serialiableMsg;

public Serializable getSerialiableMsg() throws SQLException { 
InputStream is = getMsg().getBinaryStream(); 
serialiableMsg = (is == null) ? null : (Serializable) SerializationUtils.serialize(is); 
return serialiableMsg; 
} 

public void setSerialiableMsg(Serializable serialiableMsg) { 
this.serialiableMsg = serialiableMsg; 
byte[] b = SerializationUtils.deserialize(serialiableMsg); 
setMsg(b == null ? null : Hibernate.createBlob(b)); 
} 

2.对象转换

ByteArrayOutputStream bs = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bs); 
os.writeObject(msg);//把对象写到os里。
byte[] b = bs.toByteArray();//通过bs获得转变后的byte数组。
mss.setMsg(b);

ByteArrayInputStream bi = new ByteArrayInputStream(mss.getMsg());    
ObjectInputStream oi;
Serializable msg=null;
oi = new ObjectInputStream(bi);
msg = (Serializable)oi.readObject();


    /*
     * 复制对象obj,类似于值传递,非引用
     */
    private Object cloneObject(Object obj) throws Exception{
		ByteArrayOutputStream  byteOut = new ByteArrayOutputStream();  
		ObjectOutputStream out = new ObjectOutputStream(byteOut);  
		out.writeObject(obj);         
		ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());  
		ObjectInputStream in =new ObjectInputStream(byteIn);        
		return in.readObject();
    }


二、java anonymous inner class
1.interface
public interface Animal {
    void sound();
}

2.实例
//匿名内部类new <类或接口> <类的主体>
public class JAnonymousInnerClass {
   
	//定义一个内部类
	class Cat{
		private String type;
		private String color;
		public void sound(){
        	System.out.println(color + " "+ type + "  is shouting...");
		}
		public void setType(String type){
			this.type = type;
		}
		public void setColor(String color){
			this.color = color;
		}
	}
	
	/**
	 * 定义一个匿名内部类:new class方式
	 * @param _type
	 * @param _color
	 * @return
	 */
	public Cat get(final String _type,final String _color){
		return new Cat(){//new Class
			{//初始化块
				setType(_type);
				setColor(_color);
			}
			public String toString(){
				return _color.concat(" ").concat(_type);
			}
		};
	}
	
	/**
	 * 定义一个匿名内部类:new interface方式
	 * @param _type
	 * @return
	 */
	public Animal get(final String _type){
		return new Animal(){//new Interface
			private String type = _type;
            public void sound(){
            	System.out.println(type + "  is shouting...");
            }
            public String toString(){return type;}
		};//注意分号
	}
	
	public static void main(String[] args){
		JAnonymousInnerClass jaic = new JAnonymousInnerClass();
		jaic.get("panda").sound();
		jaic.get("cat", "black").sound();
		
	}
}

3.实现回调
public interface CallBack {
	void execute();
}

	public void testRunTime(CallBack callBack) {   
        long begin = System.currentTimeMillis(); 
        callBack.execute();
        long end = System.currentTimeMillis();   
        System.out.println("[use time]:" + (end - begin));  
    }   
	
	public void testCallback(){
		testRunTime(new CallBack(){//匿名内部类
			public void execute() {
					try {
						Thread.sleep(20);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				};
		});
	}
分享到:
评论

相关推荐

    内部类知识总结3--匿名内部类

    同时,如果匿名内部类访问了外部类的非`final`局部变量,这些变量会被隐式地转换为`final`。 7. **内部类与内存管理** 内部类的对象会持有对外部类对象的引用,因此,只要内部类对象存在,外部类对象就不会被垃圾...

    【IT十八掌徐培成】Java基础第06天-05.匿名内部类-适配器模式.zip

    本讲义将深入探讨Java中的匿名内部类与适配器模式,这两种概念在实际开发中都有着广泛的用途。 首先,让我们了解一下匿名内部类。匿名内部类,顾名思义,就是没有名字的类,它可以在需要使用类的地方直接定义,无需...

    MapReduce,泛型,匿名内部类,Runnable和Callable

    匿名内部类是在Java中定义一个新的类而无需为其命名的一种方式,通常用于实现接口或者继承类,并且只需要一次使用的情况。匿名内部类可以直接访问外部类的成员,包括final变量和局部变量。在多线程编程中,我们常常...

    day08面向对象-内部类、异常.doc

    ### Java面向对象之内部类与异常详解 #### 内部类概述 在Java编程语言中,内部类(Inner Class)是一种特殊类型的类,它被定义在另一个类的内部。内部类使得程序设计更加灵活和模块化,允许更复杂的类结构和逻辑...

    使用适配器类(匿名内部类).rar_适配器

    适配器模式结合匿名内部类,可以让我们快速地将一个对象转换为期望的接口,以便与已有系统兼容。 描述中的"使用适配器类(匿名内部类)"可能是指创建了一个匿名内部类,该类实现了某个接口或继承了某个类,以便将...

    Java面向对象程序设计

    - **内部类**:包括成员内部类、局部内部类、匿名内部类,它们提供了封装和抽象的高级形式。 - **异常处理**:异常是程序运行时发生的错误,使用try-catch-finally语句块进行捕获和处理。 - **自定义异常**:可以...

    java(Day12)---内部类

    自动拆箱是将包装类的对象转换为基本数据类型,自动装箱则是将基本数据类型转换为对应的包装类。这使得基本数据类型与引用类型的相互转换更加便捷。 在处理数字时,`Random`类提供随机数生成功能,`Scanner`类则...

    JAVA内部类

    内部类(Inner Classes)是定义在另一个类或接口中的类,它们主要分为四种类型:成员内部类、静态嵌套类、方法内部类和匿名内部类。这些内部类在功能上具有一定的共性,同时又各具特色,适用于不同的场景。 **共性...

    Java内部类知识整理.pdf

    - 匿名内部类:没有名称的内部类,通常用于快速实现接口或抽象类的简短版本。 2. **内部类的特性**: - 编译后,内部类会被编译成独立的`.class`文件,但前面带有外部类的名称和 `$` 符号。 - 内部类可以直接...

    java 子类对象赋值给父类对象的使用

    7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 8. **多态性**:向上转型是实现多态的基础,使得我们可以使用父类引用处理不同子类...

    Java软件开发实战 Java基础与案例开发详解 8-1 内部类与包装器 共15页.pdf

    匿名内部类是一种没有名称的内部类,主要用于快速创建对象。它通常用于实现接口或继承类,特别适用于事件监听器的创建。 **代码示例**: ```java public class AnonymousInner { public void useAnonymous() { ...

    Java面向对象编程PPT

    - 包含在其他类内部的类,分为成员内部类、局部内部类、匿名内部类等。 - 内部类可以直接访问外部类的私有成员。 9. 异常处理 - 异常是程序运行时出现的错误,通过`try-catch-finally`块进行捕获和处理。 - ...

    java面向对象编程语言

    5. **内部类与异常类**:第6章《内部类与异常类》将讨论嵌套类(内部类)的使用,包括成员内部类、局部内部类、匿名内部类等,以及如何处理程序运行时可能出现的异常,通过try-catch语句捕获并处理异常。 6. **设计...

    JAVA 面向对象程序设计第8章 内部类和泛型.pptx

    加元素时,首先判断当前数组是否已...通过以上内容,我们了解了内部类(包括静态内部类和匿名内部类)的概念和使用,以及泛型的基本知识。实践练习部分,可以尝试根据这些知识设计并实现具体的功能,以加深理解和应用。

    面向对象程序设计Java.ppt

    - Java支持在类内部定义其他类,包括成员内部类、局部内部类、匿名内部类等,这提供了更高级的封装和代码组织方式。 9. 异常处理: - Java使用`try-catch-finally`语句块来捕获和处理运行时异常。异常类继承自`...

    Java-Java面向对象编程教程

    内部类(包括成员内部类、局部内部类和匿名内部类)允许在类内部定义其他类,提供了更灵活的设计选项。 学习Java面向对象编程,需要掌握如何创建和操作类,理解类与对象的关系,以及如何利用继承和多态性设计高效、...

    JAVA面向对象高级特性

    - 内部类可以分为成员内部类、局部内部类、匿名内部类等。 通过理解上述概念,开发者可以更好地利用 Java 面向对象编程的高级特性来构建复杂的应用系统。这些特性不仅增强了代码的灵活性和可维护性,还提高了程序...

    JAVA面向对象详细资料

    21 类与类之间的关系 32 22 GC:垃圾回收机制 33 23 Object类 33 23.1 常用方法:boolean equals(Object) 33 23.2 常用方法:String toString() 34 24 继承整理 34 25 面向对象三大特性:多态(核心) 34 25.1 多态...

    《Java面向对象程序设计》习题

    8. 内部类(Inner Class):内部类可以嵌套在其他类中,分为成员内部类、局部内部类和匿名内部类,常用于实现特定的功能或者封装特定的逻辑。 9. 接口的默认方法(Default Methods):Java 8引入的新特性,允许在...

Global site tag (gtag.js) - Google Analytics