java反射机制基础
java反射机制:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和
属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
代码示例:
Cats类:
package cn.happy.demo; @SuppressWarnings(value="unchecked")
@Deprecated
public class Cats {
//无参构造
public Cats(){}
//带参构造
public Cats(String str){}
//无参方法
public void into(){}
//代参方法
public void into(String str){}
//内部类
class inner{} }
CatDemos类:
package cn.happy.demo; import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method; public class CatDemos { public static void main(String[] args) { Class<Cats> clas = Cats.class;
Constructor[] con = clas.getDeclaredConstructors();
System.out.println("*********获取构造方法*********");
for (Constructor constructor2 : con) {
System.out.println(constructor2.toString());
}
System.out.println("************获取构造方法结束**********");
Method[] me = clas.getDeclaredMethods();
System.out.println("***********获得公共方法开始************");
for (Method method : me) {
System.out.println(method.toString());
}
System.out.println("***********获得公共方法结束************");
Method[] mt = clas.getMethods();
System.out.println("************获取全部方法************");
for (Method method : mt) {
System.out.println(method.toString());
}
System.out.println("************获取全部方法结束************");
System.out.println("***************获得包************");
Package pg = clas.getPackage();
System.out.println(pg.toString()); Annotation[] an = clas.getAnnotations();
System.out.println("************获得全部注释*************");
for (Annotation annotation : an) {
System.out.println(annotation.toString());
}
System.out.println("*******************************");
Class[] cs = clas.getDeclaredClasses();
for (Class class1 : cs) {
System.out.println(class1.toString());
}
System.out.println("***************************");
try {
Class s = Class.forName("cn.happy.demo.Cats$inner");
System.out.println(s.getDeclaringClass());
System.out.println(s.getPackage());
System.out.println(s.getSuperclass());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} }
执行结果:

java反射机制基础的更多相关文章
- java反射机制(基础版)
package com.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ja ...
- java反射机制基础总结
1反射机制是啥? 反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变.通俗的讲就是反射可以在运行时根据指定的类名获得类的信息. 2反射机制有啥用? Reflection(反射) ...
- JAVA反射机制基础概念
反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力.通过这种能力可以彻底的了解自身的情况为下一步的动作做准备.下面具体介绍一下java的反射机制.这里你将颠覆原来对java的理解. J ...
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- 【java基础】Java反射机制
一.预先需要掌握的知识(java虚拟机) 1)java虚拟机的方法区: java虚拟机有一个运行时数据区,这个数据区又被分为方法区,堆区和栈区,我们这里需要了解的主要是方法区.方法区的主要作用是存 ...
- Java基础学习总结(75)——Java反射机制及应用场景
什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...
- 夯实Java基础(二十一)——Java反射机制
1.反射机制概述 Java反射机制是指程序在运行状态中,对于任何一个类,我们都能够知道这个类的所有属性和方法(包括private.protected等).对于任何一个对象,我们都能够对它的属性和方法进 ...
- Java 基础之详解 Java 反射机制
一.什么是 Java 的反射机制? 反射(Reflection)是Java的高级特性之一,是框架实现的基础,定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: ...
- java基础知识(十一)java反射机制(下)
1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...
随机推荐
- C++ GetSystemDirectory()
关于GetSystemDirectory function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724373(v ...
- document.getElementsByClassName() 原生方法 通过className 选择DOM节点
<div id="box"> <div class="box">1</div> <div class="bo ...
- 使用android-ndk官方ndkbuild例子
Why this blog 现在(2018年9月27日),Android Studio中新建ndk项目都使用cmake而不是Android.mk+Application.mk的方式.但老项目需要维护, ...
- Redis 学习手册
一:Redis的简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包 ...
- 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)
1)集群规划:主机名 IP 安装的软件 运行的进程master 192.168.199.130 jdk.hadoop ...
- javascript 正则表达式(十)
一.什么是正则 在常见的字符串检索和替换中,我们需要提供一种模式表示检索或替换的规则.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. abc [a-z]{4} \d\d\d 二. ...
- IDEA 创建Spring MVC项目搭建
概述 IntelliJ IDEA是一款更加集成智能的开发工具,相对Myeclipse开发而言,使用起来相对更加的方便:初步手动使用IDEA搭建Spring MVC项目,现将操作流程整理记录如下. 环境 ...
- Ubuntu学习
一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”.“我的存在是因为大 ...
- Codeforces 986D Perfect Encoding FFT 分治 高精度
原文链接https://www.cnblogs.com/zhouzhendong/p/9161557.html 题目传送门 - Codeforces 986D 题意 给定一个数 $n(n\leq 10 ...
- 分解数据表(将一个datatable按数据量分隔成多个table)
/// <summary> /// 分解数据表 /// </summary> /// <param name="originalTab">需要分 ...