Java 反射问题

想问个java 反射问题
public class A{

    public void send(){
       B b = new B();
       b.send("test");
    }
}

public class B{

    public void send(String str){
    }
}

上面有两个类,想用java反射获取A类是否用到B类和B类用到的方法。。怎么做???

问题补充:
beneo 写道
引用

想用java反射获取A类是否用到B类和B类用到的方法。。怎么做???


你无法用反射来获取A类 是否用到B类和B类的方法,你只能用反射,在A类中调用B类和B类的方法。

如果你想获取A类是否用到了B类或者B类的方法,请是用AOP——AOP的实现有很多种,比如 Aspectj,spring 的 aop 实现会更方便一些。

如果你是想在A类中通过反射来调用B类,

        Class<?> clazz = B.class;
        B b = B.class.newInstance();

        Method method = b.getDeclaredMethod("send", null);
        method.invoke(sender, null);



谢了。。。知道做不了那俺改用其他方法吧。。。。
2019-03-25 13:45

相关教程

更多

java反射性能测试分析

 java有别于其他编程语言而让我着迷的特性有很多,其中最喜欢的是接口设计,他让我们设计的东西具有美感。同样反射也是我比较喜欢的一个特性,他让程序自动运行,动态加载成为了可能,同时也是现在很多流行框架所必不可少的特性,struts,hibernate等都是,spring本身就是基于反射的就更不用说了。细细想来,似乎很少有不涉及到反射的框架。我自己设计框架的时候,开始也都是运用反射,但是越

java反射详解(一)_Class类

Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实例对象来确定的,不同的实例对象有不同的属性值。

java反射详解(二)_基本概念及应用

反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。

关于反射和代理之类的实际意义体现在啊哪里?还是为了建议一种思想?

大家好,我是新人,学的是Java,刚从学校出来大半年了,搞的是Java EE的开发,还徘徊在Basic Java里。  虽说基础打牢点绝不是什么坏事,但我还是想了解下Core Java,看到关于反射、动态代理、设计模式之类的,也了解了一下,但不是很明白。  在实际开发中,反射和代理之类的实际意义体现在啊哪里?还是为了建议一种思想?

JDBC系列教程之十四:用反射ResultSetMetaData将查询结果读入对象中

1)让SQL语句中列别名和要读入的对象属性名一样;2)通过ResultSetMetaData获得结果列数和列别名;3)通过反射将对象的所有setXxx方法找到;4)将3)找到的方法setXxx和2)找到的列别名进行匹配(即方法中的xxx于列别名相等);
5)由上一步找到的方法和列别名对应关系进行赋值

【原】storm源码之巧用java反射反序列化clojure的defrecord获取属性值

storm源码是clojure、java、python的混合体。在解决storm-0.8.2的nimbus单点问题的过程中需要从zookeeper上读取目前storm集群中正在运行的assignments信息,以获取其代码在nimbus机器上的绝对路径(PS:通过java代码实现自定义的storage)。 assignments信息可以通过CuratorFramework框架的客户端读取zooke

JDBC系列教程之七:用配置文件(properties)和反射实现与具体类的耦合

添加一个配置文件,读取配置文件中的数据的种项配置,用反射实现与具体类的耦合

请问老师一个反射的问题

通过执行Class.forName("com.bjsxt.dao.A")就能执行类A中的static {}块,而通过Class clazz =  A.class则不行为什么啊,后者做了什么啊,谢谢

JAVA开源项目[转]

JAVA开源项目[转]                      Spring Framework【Java开源J2EE框架】       Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器

JAVA开源项目[转]

Spring Framework【Java开源J2EE框架】    Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建

JAVA开源项目[转]

Spring Framework【Java开源J2EE框架】     Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构

Java高新技术--张孝祥

张孝祥Java高新技术_73_源代码.rar 观看帮助.txt 56_张孝祥Java高新技术_实现类似spring的可配置的AOP框架.rar 55_张孝祥Java高新技术_编写可生成代理和插入通告的通用方法.rar 54_张孝祥Java高新技术_总结分析动态代理类的设计原理与结构.rar 53_张孝祥Java高新技术_分析InvocationHandler对象的运行原理.rar 52_张孝祥Ja

广州java培训肖文吉老师Java基础加强视频教程

视频介绍 1_疯狂软件_Java基础加强_JDK7新特性 --JDK7对Java语法有少量的更新,目的是增强易用性和便捷性的改进。 视频内容包括:二进制整数,菱形语法,增强的swtich,自动关闭资源的try,多异常捕捉,增强的throw等. 2_疯狂软件_Java基础加强_日志处理 --几乎所有应用程序都要记录日志。 --视频内容包括:java的Logger类和如何将日志信息写入控制台或文件中,

Java模板引擎 FreeMarker介绍

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,FreeMarker被设计用来生成HTML Web页面(为了提高页面的访问速度,把页面静态化),特别是基于MVC模式的应用程序

《疯狂Java讲义》高清版PDF下载

《疯狂Java讲义》高清版PDF下载的内容摘要:新版本:疯狂Java讲义(第2版)内容简介《疯狂Java讲义》2000年至今,Java语言一直是应用最广的开发语言,并拥有最广泛的开发人群。如今,Java已经不再简单地是一门语言,它更像一个完整的体系

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案