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());
}
}