java反射的一部分--最终结束

博客提及多线程的定时器,重点介绍了Java反射机制。包括反射机制中需掌握的类型,如Class、Constructor、Field、Modifier等类,还给出示例代码。同时阐述了反射机制的作用,如反编译和访问Java对象的属性、方法、构造方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于多线程的最后一点定时器

package 多线程;

import java.text.*;
import java.util.*;

/*
 * 关于定时器的应用、
 * 作用,每隔一段固定的时间执行一段代码
 */
public class TimerTest01 
{
	public static void main(String[] args) throws Exception
	{
		//1.创建定时器
		Timer t = new Timer();
		
		//2.指定定时任务
		t.schedule(
				new LogTimerTask(),
				new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").parse("2019-07-12 01:25:00 000"), 
				10*1000);
		
	}
}

//指定任务
class LogTimerTask extends TimerTask
{
	public void run()
	{
		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date()));
	}
}

反射机制
反射机制中主要掌握的类型

以下是SUN提供的反射机制中的类

java.lang.Class; Class c = 0x1234;(整个类)
java.lang.reflect.Constructor; Constructor c = 0x2345;(构造方法)
java.lang.reflect.Field; Field f = 0x3456;(属性)
java.lang.reflect.Modifier; Modifier m = 0x4567;(修饰词)

class User
{
private String name;
public User(){}
public void m1(){}
}

反射机制的作用
1.反编译:.class --> .java
2.通过反射机制访问java对象的属性,方法,构造方法等

package 反射机制;

import java.util.Date;

/*
 * 获取class对象的三种方式
 */
public class ReflcctTest01 
{
	public static void main(String[] args) throws Exception
	{
		//第一种方法
		//Class c1 = Class.forName("Employee");//c1引用保存内存地址指向堆中的对象,该对象代表的是Emploe整个类
		
		//第二种方式
		//java中每个类型都有class属性
		Class c2 = Employee.class;
		
		//第三种方式
		//java语言中任何一个java对象都有getClass方法
		Employee e = new Employee();
		Class c3 = e.getClass();//c3是运行时类(e的运行时类是Employee)
		
		//因为c1,c2,c3的内存地址是相同的,指向堆中的唯一的一个对象
		//System.out.println(c1==c2);//true
		System.out.println(c2==c3);//true
		
		//c4 c5 c6都代表Date这个类
		Class c4 = Date.class;//c4代表Date这个类
		Class c5 = Class.forName("java.util.Date");//必须是类全名,类全名带有包名
		
		Date d = new Date();
		Class c6 = d.getClass();
		
		//c7代表int类型
		Class c7 = int.class;
	}
}

package 反射机制;

public class ReflectTest02 
{
	public static void main(String[] args) throws Exception
	{
		//将A.class文件装载到JVM中的过程。       会执行静态语句块
		//Class.forName("A");
		
		//不会执行静态语句块
		//Class c = A.class;
		
		A a = new A();
		Class c = a.getClass();
	}
}

class A
{
	static 
	{
		System.out.println("A....");
	}
}
package 反射机制;
/*
 * 获取Class类型的对象之后,可以创建该“类”的对象
 */
import java.util.*;
import java.text.*;

public class ReflectTest03 
{
	public static void main(String[] args) throws Exception
	{
//		Class c = Class.forName("Employee");
//		
//		//创建此 Class 对象所表示的类的一个新实例。
//		Object o = c.newInstance();
//		
//		System.out.println(o);
		
		
		Class c1 = Class.forName("java.util.Date");
		Object o = c1.newInstance();
		
		if(o instanceof Date) {
			Date t = (Date)o;
			System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(t));
		}
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值