反射
public class Test {
public static void main (String[] args) {
Student zhangsan = new Student();
try {
Field age = clazz.getDeclaredField("age" );
age.setAccessible(true );
age.set(zhangsan, 18 );
age.setAccessible(false );
System.out.println(zhangsan.getAge());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
注解
public class Clazz {
@StudentAnnotation (age = 20 ,name = "张三" )
private Student javaTeacher;
@StudentAnnotation (age = 21 ,name = "李四" )
private Student englishTeacher;
@StudentAnnotation (name = "王五" )
private Student mathTeacher;
private int clazzNum;
private String name;
private Object student;
public Clazz (){
Class clazz = Clazz.class;
Field[] fields = clazz.getDeclaredFields();
for (Field field:fields){
StudentAnnotation ta = field.getAnnotation(StudentAnnotation.class);
if (ta == null ){
continue ;
}else {
int age = ta.age();
String name = ta.name();
Student student = new Student();
student.setAge(age);
student.setName(name);
field.setAccessible(true );
}try {
field.set(this , student);
}catch (IllegalArgumentException|IllegalAccessException e){
e.printStackTrace();
}
field.setAccessible(false );
}
}
}
多线程
继承Thread类
public class MyThread extends Thread {
public MyThread (){
}
public MyThread (String name){
super (name);
}
private int ticket = 200 ;
public void run (){
while (ticket>0 ){
System.out.println(getName()+"卖出了第" +ticket+"票" );
ticket--;
try {
Thread.sleep(1000 );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Test {
public static void main (String[] args) {
MyThread th1 = new MyThread("甲" );
MyThread th2 = new MyThread("乙" );
MyThread th3 = new MyThread("丙" );
MyThread th4 = new MyThread("丁" );
th1.start();
th2.start();
th3.start();
th4.start();
实现Runnable接口
public class MyRunnable implements Runnable {
private int i = 100 ;
private String s = "dfsd" ;
@Override
public void run () {
while (i > 0 ) {
try {
Thread.sleep(50 );
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (s) {
if (i > 0 ) {
System.out.println(Thread.currentThread().getName() + "卖出的票号为" + i);
i--;
}
}
}
}
}
public class Test {
public static void main (String[] args) {
MyRunnable runnable = new MyRunnable();
Thread t1 = new Thread(runnable,"售票员1" );
t1.start();
try {
t1.join(1000 );
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("程序运行结束" );
}
}