java反射机制入门01
java反射机制入门是我从极客学院的视频中学习的。
1、反射机制背景概述
反射(Reflection)是java被视为动态(或准动态)语言的一个关键性质。反射机制指的是程序在运行时能够获取任何类的内部所有信息(属性、方法)。
2、反射机制实现功能概述
只要给定类的全名,就可通过反射获取类的所有信息。
反射可以再程序运行时获取任意一个对象所属的类对象。
在运行时可以获取到类中所有属性对象,并对其操作(包括私有属性)。
在运行时可以获取到类中、父类中所有方法,并对其调用。
目前主流的应用框架如Struts2、Hibernate、Spring、SpringMVC等框架的核心全部是利用Java的反射机制来实现的。
1、Class对象概述
1)Class其实就是类的类型
2)字符串类型就是String,整形类型就是Integer,String和Integer类型就是Class
2、Class对象的常用方法介绍
| 方法名 | 释义 |
| getName() | 获得类中完整名称 |
| getDeclaredFields() | 获得类中所有属性 |
| getDeclaredMethods() | 获得类中所有方法 |
| getConstructors() | 获得类构造方法 |
| newInstance() | 实例化类对象 |
3、获取class对象的3种方式
package com.rainmer.bean;
public class Book {
private int id;
protected String name;
public String type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
System.out.println("调用了getName方法");
return name;
}
public void setName(String name) {
System.out.println("调用了setName方法");
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void test(String name, int a){
System.out.println("调用了多参数的方法");
}
}
package com.rainmer.main;
import com.rainmer.bean.Book;
public class Test1 {
public static void main(String[] args) {
Class demo1 = null;
Class demo2 = null;
Class demo3 = null;
//创建类对象的3种方式
//第一种方式
try {
demo1 = Class.forName("com.rainmer.bean.Book");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(demo1);
//第二种方式
Book bo = new Book();
Object ob = bo;
System.out.println(ob.getClass());
System.out.println(bo.getClass());
//第三种方式
demo3 = Book.class;
System.out.println(demo3);
//实例化类对象
try {
Book bo1 = (Book) demo1.newInstance();//newInstance方法默认返回Object对象
System.out.println(bo1);//@后面的是分配的内存地址
} catch (InstantiationException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
程序输出:
class com.rainmer.bean.Book
class com.rainmer.bean.Book
class com.rainmer.bean.Book
class com.rainmer.bean.Book
com.rainmer.bean.Book@14681070
java反射机制入门01的更多相关文章
- java反射机制入门04
需要jxl.jar package com.rainmer.main; import java.io.File; import java.io.IOException; import java.uti ...
- java反射机制入门3
Method对象的机制与实现 1.Method对象概述 1)java.lang.reflect.Method类是用于表示类中.接口中方法对象的类. 2)可以操作类中私有,以及公有等全部方法. 2.Me ...
- java反射机制入门02
Field对象的机制与实现 1.Field对象概述 1)Java.lang.reflect.Field类,是用于表示类中.接口中属性对象的类. 2)可以操作类中私有,以及公有等全部属性和属性的信息. ...
- java 反射机制01
// */ // ]]> java反射机制01 Table of Contents 1 反射机制 2 反射成员 2.1 java.lang.Class 2.2 Constructor 2.3 ...
- Java 反射机制浅析
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反 ...
- Java反射机制详解(1) -反射定义
首先,我们在开始前提出一个问题: 1.在运行时,对于一个java类,能否知道属性和方法:能否去调用它的任意方法? 答案是肯定的. 本节所有目录如下: 什么是JAVA的反射机制 JDK中提供的Refle ...
- 大白话说Java反射:入门、使用、原理
文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java反射:入门.进阶.原理> 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释. 一般情况下,我们使用某个类时 ...
- JAVA反射机制及理解
JAVA反射 往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它.当你能够解决这些问题时,便意味着你已经对这项知识入门了. 首先: 反 ...
- Java 反射机制(包括组成、结构、示例说明等内容)
第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...
随机推荐
- Android应用开发基础篇(10)-----Menu(菜单)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/28/2372101.html 一.概述 Menu,简单来理解就是当你按下手机的“menu”键时所 ...
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草( dp )
-------------------------------------------------------------------- #include<cstdio> #include ...
- 5.6.3.7 localeCompare() 方法
与操作字符串有关的最后一个方法是localeCompare(),这个方法比较两个字符串,并返回下列值中的一个: 如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下是-1,具体的值 ...
- js+jquery+css3
(原生js+jquery+css3) 前言 项目需求要弄个瀑布流的页面,用的是waterfall这个插件,感觉还是可以的,项目赶就没自己的动手写.最近闲来没事,就自己写个.大致思路理清楚,还是挺好实现 ...
- HDU 1090 A+B for Input-Output Practice (II)
#include <cstdio> int main() { int n,a,b; scanf("%d",&n); ; i<=n; i++) { scan ...
- 100% width CSS 在 iPad / iPhone Safari 背景被截断 / 显示不全
Tips: 调试 iPad 或 iPhone 可在设置中启动调试模式,在 Mac 中的 Safari 浏览器 同样开启开发者模式后,进行联机调试.功能彪悍. 最近在做一个页面时,发现在 iPad 的 ...
- swt combo 自动补全
public class AutoCompleteComboMain { static final Display display = new Display(); static fi ...
- CSS3学习笔记之linear-gradient
我觉得CSS3很不错,自己也稍微看过,并且尝试过一些属性.对我自己而言,我没有勇气说我学过CSS3,我觉得任何自己看来很小的事情,也只是站在自己的角度来评判.就算的是"简单的"HT ...
- 循环训练(for的嵌套、while、do while)以及异常处理
For的嵌套 练习一: 练习二: 练习三: 练习四: while的使用方法: 示例一: 示例二: 示例三: while的练习题: do while的使用示例: 异常处理示例: try catch ...
- BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼( dp + 矩阵快速幂 )
----------------------------------------------------------------------- #include<cstdio> #incl ...