黑马程序员——(十)反射

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

 

Class类:

Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。得到各个字节码对应的实例对象的方法:( Class类型):

1、类名.class。例如,System.class

2、对象.getClass()。例如,new Date().getClass()

3、Class.forName("类名")。例如,Class.forName("java.util.Date");

.class和Class.forName的区别:

后者可以在不确定要获得字节码的具体类的时候使用,传入的是一个字符串,经常在框架中使用。

 

九个预定义类型的实例对象:

基本的 Java 类型(booleanbytecharshortintlongfloat 和double)和关键字void 也

表示为Class对象。基本类型的字节码获取方式只有一种就是类名.class。

 

反射: 

反射就是把Java类中的各种成分映射成相应的java类。

 

构造方法的反射:

onstructor类代表某个类中的一个构造方法;

得到某个类所有的构造方法:

例子:Constructor [] constructors= Class.forName("java.lang.String").getConstructors();

 

得到某一个构造方法:

例子:Constructor constructor=Class.forName(“java.lang.String”).getConstructor(StringBuffer.class);

 

获得方法时要用到类型,创建实例对象:

通常方式:String str = new String(new StringBuffer("abc"));

反射方式: String str = (String)constructor.newInstance(new StringBuffer("abc"));

调用获得的方法时要用到上面相同类型的实例对象。

 

反射练习:

package com.test;

import java.lang.reflect.Array;

//数组的反射
public class FanSheArray 
{

	public static void main(String[] args) 
	{
		int[] a1=new int[]{1,2,3};
		int a2=10;
		String[]a3 ={"s","w","f"};
		String[] a4=new String[]{"a","b","c"};

//		System.out.println(Arrays.asList(a1));
//		System.out.println(Arrays.asList(a4));
		printObject(a1);
		printObject(a4);
	}

	private static void printObject(Object obj) 
	{
		Class class1=obj.getClass();		//判断传入的值的字节码
		if (class1.isArray())
		{
			int len=Array.getLength(obj);	//用反射取得传入的数组的长度
			for (int i = 0; i < len; i++) 	//遍历数组打印
			{
				System.out.println(Array.get(obj, i));
			}
		}
		else
		{
			System.out.println(obj);
		}
	}

}


 

 运行效果:

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值