在Java中,调用类的方法有两种方式:对于静态方法可以直接使用类名调用,对于非静态方法必须使用类的对象调用。反射机制提供了比较另类的调用方式,可以根据需要指定要调用的方法,而不必在编程时确定。调用的方法不仅限于public的,还可以是private的。编写程序,使用反射机制调用Math类的静态方法sin()和非静态方法equals()。

思路如下:使用Math.class.getDeclaredMethod("sin", Double.TYPE);访问指定的方法,其中”sin”表示要访问的方法的名称为sin,Double.TYPE表示入口参数的类型为double。

代码如下:

import java.lang.reflect.Method;

public class DongTai {
public static void main(String[] args) {
try {
System.out.println("调用Math类的静态方法sin()");
Method sin = Math.class.getDeclaredMethod("sin", Double.TYPE);
Double sin1 = (Double) sin.invoke(null, new Integer(1));
System.out.println("1的正弦值是:" + sin1);
System.out.println("调用String类的非静态方法equals()");
Method equals = String.class.getDeclaredMethod("equals", Object.class);
Boolean mrsoft = (Boolean) equals.invoke(new String("明日科技"), "明日科技");
System.out.println("字符串是否是明日科技:" + mrsoft);
} catch (Exception e) {
e.printStackTrace();
}
}
}

  效果如图:

Java动态调用类中方法的更多相关文章

  1. C# 如何利用反射,将字符串转化为类名并调用类中方法

    首先,先随便创建一个测试类 <span style="font-family:Microsoft YaHei;font-size:18px;">public class ...

  2. rutime中动态调用类的方法

    Dynamically invoke a class method in Objective C 代码 #import <Foundation/Foundation.h> #import ...

  3. 【JAVA】调用类中的属性

    class person { String name; int age; String like; void setName(String name) { this.name = name; } vo ...

  4. C#实现调用Java类中方法

    基本思路: 用C#实现调用Java编写的类中的方法:重点是将Java编写的程序打包成Jar,然后使用开源工具IKVM将其转化成DLL控件,在.NET环境下调用. 分为以下步骤: 1.下载JDK6(注: ...

  5. Spring service本类中方法互相调用事物失效问题

    简介 Spring事物利用的是AOP,动态代理采用CGLIB代理(默认,也可以用Proxy代理,但是Proxy代理效率低于CGLIB代理).故只要弄懂Spring的AOP实现,就知道为什么servic ...

  6. Java学习笔记(七)——获取类中方法的信息,java的LinkedList

    [前面的话] 在实际项目中学习知识总是最快和最有效的,既能够较好的掌握知识,又能够做出点东西,还是简单的知识总结,最近一直在总结笔记,写的东西还是比较水,希望慢慢可以写出一些干货. 学习过程中的小知识 ...

  7. 利用java反射调用类的的私有方法--转

    原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...

  8. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  9. java.lang.Class类中的某些方法

    反射的代码会经常遇到,Class类中方法真的多,且用的少,大多用在底层源码这块,既然看到了,就记录一下吧,说不定以后厉害了,自己封装框架,haha getComponentType()方法: Syst ...

随机推荐

  1. hive中窗口分析函数

    分组统计 1. groups sets(field1,field2,field3, (field1,field2)) 样例如下: select dt,tenantCode,nvl(platform,' ...

  2. [转]MS SQL Server 数据库连接字符串详解

    http://blog.csdn.net/jackiehome/article/details/8668121 问题 : 超时时间已到.在从池中获取连接之前超时时间已过.出现这种情况可能是因为所有池连 ...

  3. [转] JSON转换

    转载自:http://www.360doc.com/content/12/0413/14/9529755_203286509.shtml# JSON简介 JSON(JavaScript Object ...

  4. hbase1.4.0安装和使用

    jia下载地址:  http://mirrors.shuosc.org/apache/hbase/1.4.0/ 解压 tar -zxvf hbase-1.4.0-bin.tar.gz 修改环境变量 [ ...

  5. Git 生命周期

    在本章中,我们将讨论的Git的生命周期.在后面的章节中,我们将看到的Git命令为每个操作. 一般工作流程是这样的: 克隆Git仓库作为工作副本. 可以添加/编辑文件,修改工作副本. 如果有必要,你还服 ...

  6. MVC教程九:异常过滤器

    我们平常在程序里面为了捕获异常,会加上try-catch-finally代码,但是这样会使得程序代码看起来很庞大,在MVC中我们可以使用异常过滤器来捕获程序中的异常,如下图所示: 使用了异常过滤器以后 ...

  7. Java 应该被记住的8位大人物

    这里列举了 8 个 Java 人物,他们创建了对 Java 社区贡献很大的框架.产品.工具和图书,也因此改变了 Java 的编码方法. 8. Tomcat 和 Ant 创办人 James Duncan ...

  8. r语言 列出所有变量

    你希望知道目前工作空间中存在哪些已定义的变量和函数. 解决方案 使用ls函数,或者使用ls.str函数了解每个变量更详细的信息. 讨论 ls函数可以显示当前工作空间中所有对象的名称:> x &l ...

  9. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE

    导入命令 sqoop import --connect jdbc:mysql://192.168.200.250:3306/sqoop --table widgets --hbase-create-t ...

  10. Resnet小记

    ResNet之Deeper Bottleneck Architectures 2016年12月28日 22:17:48 阅读数:2350 去年的时候,微软一帮子人搞了个152层的神经网络!WTF!详情 ...