Java中Reflect的基本使用
首先在package reflect下定义了一个类Book
package reflect;
class Book{
private String title;
private double price;
public Book() {
this("Java开发", 20.00);
}
public Book(String title, double price) {
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "标题: " + this.title + ", 价格:" + this.price;
}
}
package reflect; import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Arrays; public class Reflect {
public static void main(String[] args) throws Exception {
/**
* 通过Class.forName(String str)方法获取Class实例cls
* 通过getConstructor(parameterTypes)获取构造方法
* 通过get。。。获取 public的属性, 方法
* 通过getDeclared。。。获取public,protected, private属性, 方法
* 通过newInstance(parameterTypes)构造对象
*/
Class<?> cls = Class.forName("reflect.Book");
Constructor<?> con = cls.getConstructor(String.class, double.class);
Object obj = con.newInstance("你好", 2.5);
System.out.println(obj);
Method[] methods = cls.getDeclaredMethods();
// System.out.println(Arrays.toString(methods));
Method setTitle = cls.getMethod("setTitle", String.class);
Method getTitle = cls.getMethod("getTitle");
// 通过invoke(obj, paramter)执行获取的方法
setTitle.invoke(obj, "我好!");
System.out.println(getTitle.invoke(obj));
System.out.println(obj);
}
}
Java中Reflect的基本使用的更多相关文章
- JAVA中反射机制五(java.lang.reflect包)
一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...
- JAVA中反射机制六(java.lang.reflect包)
一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...
- Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下: log4j:WARN No appenders ...
- Java中的反射--Reflect
在张孝祥老师的Java讲解中,学习到了Java反射的一部分知识,觉得有必要好好学习一下哈. 一.反射的理解 经典总结:反射就是把Java类中的各种成分映射成为相应的Java类 例如:一个Java类中用 ...
- java反射(java.lang.reflect)---java.lang.reflect.Modifier中状态码
1. 详情请看jvm(虚拟机)规范 java.lang.reflect.Modifier public static final int ABSTRACT 1024 public static fin ...
- 【java】细说 JAVA中 标注 注解(annotation)
Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用 下面我们来详细说说这个注解,到底是怎么一 ...
- java中动态代理的实现
动态代理的实现 使用的模式:代理模式. 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.类似租房的中介. 两种动态代理: (1)jdk动态代理,jdk动态代理是由Java内部的反射机制 ...
- Java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...
- Java中是否可以调用一个类中的main方法?
前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...
随机推荐
- 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)
1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQL图形化界面和汉化以后(过程自己百度吧,百度more and more),登录 ...
- ExceptionLess的webAPI调用
引用 <package id="bootstrap" version="3.0.0" targetFramework="net461" ...
- Java集合中List,Set以及Map等集合体系详解(史上最全)
https://blog.csdn.net/zhangqunshuai/article/details/80660974
- @transactional注解下失效
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性 先来了解一下@Transactio ...
- linux 锁定重要文件 更改重要命令
锁定重要文件如下: chattr +i /etc/passwd /etc/shadow /etc/groupp /etc/gshadow 解锁文件 chattr -i /etc/passwd /etc ...
- jenkins X实践系列(3) —— jenkins X 安装拾遗
jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中.最近调研了JX,这里为第3篇,介绍下如何安装jenkins x. 前置条件 安装K8S 安装ceph集群(jx需要stor ...
- 【Android】application标签说明
<application> <application android:allowClearUserData=["true" | "false" ...
- python基础——高级特性
1.切片 切片: >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] >>> L[:3] ['Michael ...
- excel追加数据
原本是想通过读取已存在的文件的行然后直接添加保存,发现结果会被覆盖. 后来查找方法发现需要复制原表. 函数参数: list:要添加的数据 filename:目标文件 sheet_index:默认表的第 ...
- Codeforces 868F Yet Another Minimization Problem 决策单调性 (看题解)
Yet Another Minimization Problem dp方程我们很容易能得出, f[ i ] = min(g[ j ] + w( j + 1, i )). 然后感觉就根本不能优化. 然后 ...