Java核心技术 卷I —— 第6章 接口与内部类

1、回调

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

//import java.util.Date;


public class CallBackimplements ActionListener{


@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Calendar calendar = Calendar.getInstance();

int hour = calendar.get(Calendar.HOUR_OF_DAY);

int minute = calendar.get(Calendar.MINUTE);

int sec = calendar.get(Calendar.SECOND);

System.out.println("it is " +hour + ":" +minute + ":" +sec +" now");

Toolkit.getDefaultToolkit().beep(); //打出beep声音

}

}


import javax.swing.JOptionPane;

import org.junit.Test;


public class testClass {

@Test

public void test() throws Exception {

CallBack callBack =new CallBack();

System.out.println("hashcode: "+callBack.hashCode());

javax.swing.Timer timer = new javax.swing.Timer(5000, callBack);

timer.start();

JOptionPane.showMessageDialog(null,"quit?");

System.exit(0);

}

}


结果:

hashcode: 42768293

it is 19:53:34 now

it is 19:53:39 now

。。。。。。


2、对象克隆:任何时候都最好实现Cloneable接口,避免浅拷贝出现的错误

public class Person implements Cloneable{

public Person() {

// TODO Auto-generated constructor stub

}

public Person(int _age, int _height, String _name) {

// TODO Auto-generated constructor stub

age = _age;

height = _height;

name.delete(0, name.length());

name.append(_name);

}

public Person cloneObject(Person person) {

return (Person) person.clone();

}

@Override

protected Person clone(){

// TODO Auto-generated method stub

Person person = new Person(0, 0, "");

person.age = this.age;

person.height = this.height;

person.name = this.name;

//默认的clone只是浅拷贝,对于有子对象的引用需重新生成一份子对象

return person;

}

public int age;

public int height;

public StringBuilder name = new StringBuilder(); //记得初始化,否则会抛出异常

}


import org.junit.Test;

public class testClass {

@Test

public void testClone() {

Person person = new Person(23, 180, "nick");

Person person2 = person.clone();

System.out.println(person2.age);

System.out.println(person2.name.toString());

}

}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值