回忆(一):反射中获得class对象的三种方法
package reflex;
/*
* 反射:就是通过class文件对象 去使用该文件中的成员
* 变量,构造方法,成员方法。
*
* Person p = new Person(); p.使用
*
* 要想这样使用,首先必须得到class文件对象,其实也
* 就是得到Class类的对象。
* Class类:
* 成员变量 Field
* 构造方法 Construtor
* 成员方法 Method
*
* @author mzy
*
* 获取class类的对象的方式:
* A:Object类的getClass()方法
* B:数据类型的静态class
* C:Class类中的静态方法
* public static Class<?> forName(String className)
*
*
* 我们写的话:
* 获得Class对象,三种都可以;第二种最方便
*
* 开发:
* 第三种最好:因为第三种是一个字符串,
* 而不是一个具体的类名,这样我们就可
* 以把这样的字符串配置到配置文件中。
*
*
*
*
*/
public class ReflectDemo01_visit_three_methods {
public static void main(String[] args) throws ClassNotFoundException {
// 获得Class的方法(感叹号问题为泛型)
// 方式1:
Person p = new Person();
Class c = p.getClass();
Person p2 = new Person();
Class c2 = p2.getClass();
System.out.println(p == p2); // false
System.out.println(c == c2); // true
// 方式2: 通过类名直接获得class对象
Class c3 = Person.class;
// 所有的数据类型都有它的class对象
// int.class;
// String.class;
System.out.println(c == c3); // true
// 方式3:
/*
* 抛出ClassNotFoundException
6+ * 找不到
* 以后涉及到通过类的名称来找的
* 一定要写全路径(带包名的全路径)
* Class c4 = Class.forName("Perosn");
*
*
* 打开.java文件上的箭头,右键点 Copy Qualified Name
*/
Class c4 = Class.forName("reflex.Person");
System.out.println(c == c4); // true
}
}
其中的person类:
package reflex;
public class Person {
// 成员变量
private String name;
int age;
public String address;
// 构造方法
public Person() {
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
private Person(String name) {
this.name = name;
}
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
// 成员方法
public void show() {
System.out.println("show");
}
public void method(String s) {
System.out.println("method" + s);
}
public String getString(String s, int i) {
return s + "---" + i;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
private void function() {
System.out.println("function");
}
}
回忆(一):反射中获得class对象的三种方法的更多相关文章
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- 【转载】取得系统中网卡MAC地址的三种方法
From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址 ...
- Java中获取键盘输入值的三种方法
Java中获取键盘输入值的三种方法 Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...
- javascript生成对象的三种方法
/** js生成对象的三种方法*/ // 1.通过new Object,然后添加属性 示例如下: var people1 = new Object(); people1.name = 'xiaohai ...
- Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...
- 获取class对象的三种方法以及通过Class对象获取某个类中变量,方法,访问成员
public class ReflexAndClass { public static void main(String[] args) throws Exception { /** * 获取Clas ...
- Java反射 - 1(得到类对象的几种方法,调用方法,得到包下的所有类)
通过反射获得对象的方法 准备工作: 有一个User类如下 package o1; /** * Created by yesiming on 16-11-19. */ public class User ...
- 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)
Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...
- 反射:获取Class对象的三种方式
获取Class对象的三种方式 package lianxiApril18; /** * 获取Class对象的三种方式 * 1 Object ——> getClass(); * 2 任何数据类型( ...
随机推荐
- 如何让Spring Boot 的配置动起来?
前言 对于微服务而言配置本地化是个很大的鸡肋,不可能每次需要改个配置都要重新把服务重新启动一遍,因此最终的解决方案都是将配置外部化,托管在一个平台上达到不用重启服务即可一次修改多处生效的目的. 但是对 ...
- Leetcode1.两数之和——简洁易懂
> 简洁易懂讲清原理,讲不清你来打我~ 输入一个数组和一个整数,从数组中找到两个元素和为这个整数,输出下标 { const int LENGTH = 10;/ ...
- odoo时间过滤
Odoo中本日.本月.上月过滤器实现方法 Odoo中本日.本月.上月过滤器实现方法<filter string="今日订单" name="today" ...
- 第二十五篇 -- C++宝典中的图书管理系统
此篇文章是基于C++宝典写的图书管理系统,本人对其中的部分做了相应修改,并且以现有格式替代原有格式,使程序更加清晰明了.此程序运行在VS2017上. 系统设计 图书管理系统分为四个模块:图书管理模块. ...
- 关于clear:both;后有固定高度的原因及解决方法
不知道从什么时候开始,拥有clear:both;元素的父元素偶尔会出现固定的高度,之前给父元素加diaolay:hidden;临时处理,一直没搞清楚原因,今天又出现该问题,花费半天时间找出了原因记录一 ...
- anyRTC视频连麦demo上线啦!
音频连麦demo一经问世就得到开发者的一致好评,有很多开发者咨询视频连麦的demo该怎么去实现,本着让"视频交付更简单"的理念,我们推出了视频连麦demo! 音视频技术不仅局限用于 ...
- CF201C Fragile Bridges TJ
本题解依旧发布于洛谷,如果您能点个赞的话--(逃 前言 题目链接 正解:动态规划 思路不是很好想,想出来了应该就没有多大问题了,但是需要处理的细节较多,再加上水水的样例,难度应该是偏难的.个人感觉应该 ...
- 计算机网络part2——物理层
物理层概述 1.物理层基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体. 主要任务:确定与传输媒体接口有关的一些特性 特性: 机械特性 电气特性 功能特性 规 ...