Java反射特性--获取其他类实例并调用其方法

1. 代码结构

.
├── com
│   └── test
│      └── MyTest.java
└── MainCall.java

2. 代码内容

MyTest.java:

package com.test;

public class MyTest
{
    public void do_test()
    {
        System.out.println("Doing test...\n");
    }
}

MaiCall.java

import java.lang.reflect.Method;

public class MainCall
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!\n");

        Class<?> mt = null;
        try{
            mt = Class.forName("com.test.MyTest");
        }catch(Exception e) {
            e.printStackTrace();
        }

        System.out.println("ClassName: " + mt.getName());

        try{
            Method method = mt.getMethod("do_test");
            method.invoke(mt.newInstance());
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3.编译

javac com/test/MyTest.java

javac MainCall.java

编译成功后:

.
├── com
│   └── test
│      ├── MyTest.class
│      └── MyTest.java
├── MainCall.class
└── MainCall.java

4. 执行

java MainCall得到输出:

Hello World!

ClassName: com.test.MyTest
Doing test...

时间: 2024-12-20 22:03:56

Java反射特性--获取其他类实例并调用其方法的相关文章

利用反射获取一个类实例的所有属性名称和值 拼接为字符串

需要一个功能:获取一个类实例的所有属性名称和值并拼接为字符串,然后进行处理.代码保存在此以备后用. 建立一个类文件ClassToString.cs 以下代码可以直接使用,参数为一个类的实例,返回的是一个数组,[0]为属性名的拼接,[1]为属性Value的拼接. 对于类的属性类型没有限制,但是如果没有全部赋值的话,Value会范围默认值, 比如int为0,String为空,DateTime为0001/1/1 0:00:00,0,0,0 需要有需要的话可以在拼接的时候判断进行相应处理 ClassTo

java笔记--关于Object类与线程相关的方法

关于Object类中的线程方法 Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notifyAll(),wait(),这几个方法都是用来控制线程的运行状态的. 方法列表如下: notify() : 唤醒在此对象监视器上等待的单个线程 notifyAll() : 唤醒在此对象监视器上等待的所有线程 wait() : 在其他线程时调用此对象的notify()或者notifyAll()方法前,导

在基类构造器中调用虚方法需谨慎

最近,在基类的构造函数中调用虚方法时,发现了一个问题.先把问题重现如下: class Program { static void Main(string[] args) { var c = new Chinese(18); Console.ReadKey(); } } public class People { public int Age { get; protected set; } protected People() { this.Say(); } public virtual void

JavaScript获取后台C#变量以及调用后台方法 &amp;&amp; 获取请求的URL参数

一.当然我们可以在后台中获取参数的值,然后在前台js代码中获取变量的值,具体做法请参考下面JavaScript获取后台C#变量以及调用后台方法. 其实我们也可以直接在js中获取请求的参数的值,通过使用window.location.search可以获取到当前URL的?号开始的字符串,如前面的链接获取到的search为?id=001.再对获取的字符串进行处理,就可以获取到参数的值了. 复制代码 代码如下: 1 function getUrlParam(name) { 2 var reg = new

Java如何获取当前类路径

1.如何获得当前文件路径 常用: (1).Test.class.getResource("") 得到的是当前类FileTest.class文件的URI目录.不包括自己! (2).Test.class.getResource("/") 得到的是当前的classpath的绝对URI路径. (3).Thread.currentThread().getContextClassLoader().getResource("") 得到的也是当前ClassPat

java中获取所有文件--(递归调用)

import java.io.File;import java.io.*; //获取一个文件夹中的所有的文件.  /*    打印要求:      -- a.txt   -- IO.doc      -- ~$IO.doc   -- 代码   -- --.metadata   -- --Day18   --视频   -- --01 线程通信.wmv   -- --02 守护线程和join方法.wmv   -- --03 Filed的创建.wmv   -- --04 File的常用方法.wmv  

asp.net动态加载程序集创建指定类的实例及调用指定方法

以下类中有三个方法: LoadAssembly:加载指定路径的程序集 GetInstance:根据Type动态获取实例,用泛型接到返回的类型 ExecuteMothod:执行实例中的指定方法 /// <summary> /// 继承自MarshalByRefObject表示允许跨域通信 /// </summary> public class RemoteLoader : MarshalByRefObject { private Assembly _assembly; public

java中获取文件或文件夹的路径方法

获取当前类的所在工程路径; 如果不加"/" File f = new File(this.getClass().getResource("").getPath()); System.out.println(f); 结果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test 获取当前类的绝对路径: 第二种:File directory = new File(&quo

在Java中Arrays工具类实现功能的六种方法

使用Arrays工具类,要先导入包即:import.java.util.Arrays 以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int []a={10,20,30}; int []b={10,20,30}; int []c={1,2,3}; boolean isEqual=Arrays.equals(a,b); System.out.println(isEqual); System.out.println(Arrays.equals