Справочник по C#

    Исходники по языку программирования CSharp

    Как использовать Reflection для вызова метода Java во время выполнения

    /
    /
    /
    169 Views

    Reflection – очень полезный подход для работы с классом Java во время выполнения, его можно использовать для загрузки класса Java, вызова его методов или анализа класса во время выполнения.

    В этом примере вы загрузите класс с именем « AppTest » и вызовете каждый из его методов во время выполнения.

    1. AppTest.java

    Этот класс Java и его методы будут вызываться во время выполнения позже

    
    package com.csharpcoderr.reflection;
    
    public class AppTest{
    
    private int counter;
    
    public void printIt(){
    System.out.println("printIt() no param");
    }
    
    public void printItString(String temp){
    System.out.println("printIt() with param String : " + temp);
    }
    
    public void printItInt(int temp){
    System.out.println("printIt() with param int : " + temp);
    }
    
    public void setCounter(int counter){
    this.counter = counter;
    System.out.println("setCounter() set counter to : " + counter);
    }
    
    public void printCounter(){
    System.out.println("printCounter() : " + this.counter);
    }
    }
    

    2. ReflectApp.java

    Этот класс загрузит класс « AppTest » и вызовет его методы во время выполнения. Коды и комментарии не требуют пояснений.

    
    package com.csharpcoderr.reflection;
    
    import java.lang.reflect.Method;
    
    public class ReflectApp{
    
    public static void main(String[] args) {
    
    // без параматера
    Class noparams[] = {};
    
    // Строковый параметр
    Class[] paramString = new Class[1];
    paramString[0] = String.class;
    
    // параметр int
    Class[] paramInt = new Class[1];
    paramInt[0] = Integer.TYPE;
    
    try{
    // загрузить AppTest во время выполнения
    Class cls = Class.forName("com.csharpcoderr.reflection.AppTest");
    Object obj = cls.newInstance();
    
    // вызываем метод printIt
    Method method = cls.getDeclaredMethod("printIt", noparams);
    method.invoke(obj, null);
    
    // вызываем метод printItString, передаем параметр String
    method = cls.getDeclaredMethod("printItString", paramString);
    method.invoke(obj, new String("mkyong"));
    
    // вызываем метод printItInt, передаем параметр int
    method = cls.getDeclaredMethod("printItInt", paramInt);
    method.invoke(obj, 123);
    
    // вызываем метод setCounter, передаем параметр int
    method = cls.getDeclaredMethod("setCounter", paramInt);
    method.invoke(obj, 999);
    
    // вызываем метод printCounter
    method = cls.getDeclaredMethod("printCounter", noparams);
    method.invoke(obj, null);
    
    }catch(Exception ex){
    ex.printStackTrace();
    }
    }
    }
    

    3. Выход

    
    printIt() no param
    printIt() with param String : mkyong
    printIt() with param int : 123
    printCounter() : 999
    

    Ява отражение

    Как использовать Reflection для вызова метода Java во время выполнения

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest