一、对象操作
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();
}
};
});
}
分享到:
相关推荐
同时,如果匿名内部类访问了外部类的非`final`局部变量,这些变量会被隐式地转换为`final`。 7. **内部类与内存管理** 内部类的对象会持有对外部类对象的引用,因此,只要内部类对象存在,外部类对象就不会被垃圾...
本讲义将深入探讨Java中的匿名内部类与适配器模式,这两种概念在实际开发中都有着广泛的用途。 首先,让我们了解一下匿名内部类。匿名内部类,顾名思义,就是没有名字的类,它可以在需要使用类的地方直接定义,无需...
匿名内部类是在Java中定义一个新的类而无需为其命名的一种方式,通常用于实现接口或者继承类,并且只需要一次使用的情况。匿名内部类可以直接访问外部类的成员,包括final变量和局部变量。在多线程编程中,我们常常...
### Java面向对象之内部类与异常详解 #### 内部类概述 在Java编程语言中,内部类(Inner Class)是一种特殊类型的类,它被定义在另一个类的内部。内部类使得程序设计更加灵活和模块化,允许更复杂的类结构和逻辑...
适配器模式结合匿名内部类,可以让我们快速地将一个对象转换为期望的接口,以便与已有系统兼容。 描述中的"使用适配器类(匿名内部类)"可能是指创建了一个匿名内部类,该类实现了某个接口或继承了某个类,以便将...
- **内部类**:包括成员内部类、局部内部类、匿名内部类,它们提供了封装和抽象的高级形式。 - **异常处理**:异常是程序运行时发生的错误,使用try-catch-finally语句块进行捕获和处理。 - **自定义异常**:可以...
自动拆箱是将包装类的对象转换为基本数据类型,自动装箱则是将基本数据类型转换为对应的包装类。这使得基本数据类型与引用类型的相互转换更加便捷。 在处理数字时,`Random`类提供随机数生成功能,`Scanner`类则...
内部类(Inner Classes)是定义在另一个类或接口中的类,它们主要分为四种类型:成员内部类、静态嵌套类、方法内部类和匿名内部类。这些内部类在功能上具有一定的共性,同时又各具特色,适用于不同的场景。 **共性...
- 匿名内部类:没有名称的内部类,通常用于快速实现接口或抽象类的简短版本。 2. **内部类的特性**: - 编译后,内部类会被编译成独立的`.class`文件,但前面带有外部类的名称和 `$` 符号。 - 内部类可以直接...
7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 8. **多态性**:向上转型是实现多态的基础,使得我们可以使用父类引用处理不同子类...
匿名内部类是一种没有名称的内部类,主要用于快速创建对象。它通常用于实现接口或继承类,特别适用于事件监听器的创建。 **代码示例**: ```java public class AnonymousInner { public void useAnonymous() { ...
- 包含在其他类内部的类,分为成员内部类、局部内部类、匿名内部类等。 - 内部类可以直接访问外部类的私有成员。 9. 异常处理 - 异常是程序运行时出现的错误,通过`try-catch-finally`块进行捕获和处理。 - ...
5. **内部类与异常类**:第6章《内部类与异常类》将讨论嵌套类(内部类)的使用,包括成员内部类、局部内部类、匿名内部类等,以及如何处理程序运行时可能出现的异常,通过try-catch语句捕获并处理异常。 6. **设计...
加元素时,首先判断当前数组是否已...通过以上内容,我们了解了内部类(包括静态内部类和匿名内部类)的概念和使用,以及泛型的基本知识。实践练习部分,可以尝试根据这些知识设计并实现具体的功能,以加深理解和应用。
- Java支持在类内部定义其他类,包括成员内部类、局部内部类、匿名内部类等,这提供了更高级的封装和代码组织方式。 9. 异常处理: - Java使用`try-catch-finally`语句块来捕获和处理运行时异常。异常类继承自`...
内部类(包括成员内部类、局部内部类和匿名内部类)允许在类内部定义其他类,提供了更灵活的设计选项。 学习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 多态...
8. 内部类(Inner Class):内部类可以嵌套在其他类中,分为成员内部类、局部内部类和匿名内部类,常用于实现特定的功能或者封装特定的逻辑。 9. 接口的默认方法(Default Methods):Java 8引入的新特性,允许在...