java基础之 反射_Java基础之反射原理与用法详解
本文实例讲述了Java基础之反射原理与用法。分享给大家供大家参考,具体如下:
1.什么是反射?
反射其实就是动态的加载类,我们在写JDBC的时候加载驱动Class.forName("xxx")时就涉及到了反射。
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2.反射机制能做什么?
1. 在运行时判断任意一个对象的所属的类Class。
2. 在运行时判断构造任意一个类的对象Constructor。
3. 在运行时判断任意一个类所具有的成员变量Field和方法Method。
4. 在运行时调用任意一个对象的方法。method.invoke(object,args)
3.反射机制相关的API
获得完整的包名和类名
Student.java
package com.reflect.test;
public class Student {
private int id;
private String name;
public Student() {}
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
Test.java
package com.reflect.test;
public class Test {
Student stu = new Student();
public static void main(String[] args) {
Test test = new Test();
test.getClassName();
}
//获得完整的包名和类名
public void getClassName() {
System.out.println(stu.getClass().getName());
}
}
运行结果
com.reflect.test.Student
获取Class的三种方法
public static void main(String[] args) {
Test test = new Test();
test.getStudentClass();
}
//获取Class对象的三种犯法
public void getStudentClass() {
//第一种方法,forName
Class> class1;
try {
class1 = Class.forName("com.reflect.test.Student");
System.out.println("class1:"+class1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//第二种方法,class
Class> class2 = Student.class;
System.out.println("class2:"+class2);
//第三种方法,getClass()
Student stu1 = new Student();
Class> class3 = stu1.getClass();
System.out.println("class3:"+class3);
}
运行结果
class1:class com.reflect.test.Student
class2:class com.reflect.test.Student
class3:class com.reflect.test.Student
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
java基础之 反射_Java基础之反射原理与用法详解相关推荐
- java 对象数组定义_Java对象数组定义与用法详解
本文实例讲述了Java对象数组定义与用法.分享给大家供大家参考,具体如下: 所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据 ...
- Django基础(11): 表单集合Formset的高级用法详解
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...
- java random函数用法_JAVA的Random类的用法详解
Random类主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家. Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时 ...
- java 接口 返回值_java api返回值的标准化详解
api返回值的标准化 例如 {"status":200,"message":"操作成功","data":"{\ ...
- java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
Java学习笔记16-Netty缓冲区ByteBuf详解 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的. JDK Byt ...
- java语言链栈_Java语言实现数据结构栈代码详解
近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...
- java tostring格式化日期_java日期格式化SimpleDateFormat的使用详解
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- java打印菱形图案_java打印出菱形图案实例详解
第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...
- java的匿名函数_JAVA语言中的匿名函数详解
本文主要向大家介绍了JAVA语言中的匿名函数详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.使用匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: ...
最新文章
- 【直播】黎佳佳:音频数据分析以及特征提取
- java多线程 模型_一篇文章读懂Java多线程模型
- 信息存储 整数表示 原码 反码 补码 无符号数 有符号数 转换 扩展 截断
- 海量数据处理之蓄水池抽样算法
- for of 和 for in 在数组和对象中的区别
- Springboot 项目中过滤器的使用
- Unity Application Block 发布
- CF1041E Tree Reconstruction_构造_思维题
- PowerDesigner的學習
- Python 3.x对.CSV数据按任意行、列读取
- linux新终端找回任务,如何向您的Linux终端添加强大的多任务
- windows中配置ant环境变量
- Tomcat 8 解决“At least one JAR was scanned for TLDs yet contained no TLDs”问题
- Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.错误解决
- 测试/开发程序员喜欢跳槽?跳了就能涨工资吗?
- 备份恢复Lesson 10. Restore and Recovery Concepts
- Python——第五天Beer
- 新手如何快速入门node.js
- 当遇到网站打不开,你会怎么排查它的问题?
- 5 大型网站核心架构要素
热门文章
- leetcode ---双指针+滑动窗体
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
- iOS 深拷贝、浅拷贝、自定义对象拷贝简介
- Java排序:冒泡排序
- [转载] python getattr_Python中的异常处理
- [转载] python+opencv图像处理:numpy数组操作
- [转载] python 短网址_使用Python生成url短链接的方法
- [转载] 聚类算法总结
- HDU 3400 Line belt (三分)
- 【转载】深入分析 ThreadLocal 内存泄漏问题