如何在java中调用各种类的实例

如何在java中调用各种类的实例,java,class,Java,Class,我创建了一个类来处理在我的项目中使用各种类的特定作业 但是在完成之后,作业类必须回调被调用类上的特定方法 我使用接口来处理这个回调方法 如何存储被调用的类 我可以从构造函数中获取实例,但我正在寻找通用方法。您的问题不清楚,但您可能忽略了类可以实现多个接口的事实 public interface DoesAJob { public void doIt(); } public interface Finishes { public void finish(); } class

我创建了一个类来处理在我的项目中使用各种类的特定作业

但是在完成之后,作业类必须回调被调用类上的特定方法

我使用接口来处理这个回调方法

如何存储被调用的类


我可以从构造函数中获取实例,但我正在寻找通用方法。

您的问题不清楚,但您可能忽略了类可以实现多个接口的事实

public interface DoesAJob {

    public void doIt();
}

public interface Finishes {

    public void finish();
}

class AThing implements DoesAJob, Finishes {

    @Override
    public void doIt() {

    }

    @Override
    public void finish() {

    }

}

private void doTheJob(DoesAJob thing) {
    thing.doIt();
}

private void finishUp(Finishes thing) {
    thing.finish();
}

public void test() {
    AThing thing = new AThing();
    doTheJob(thing);
    finishUp(thing);
}

您可以只使用Java接口,也可以使用Java反射

首先是界面

package test;

public interface MyClassInterface {
    public String getName();
}
接下来是接口实现

    package test;

    public class MyClassImplementation implements MyClassInterface {
        String name;

        public MyClassImplementation() {
            name= "Whatever";
        }

        public String getName() {
            return name;
        }
    }
最后调用该类。例如:

    package test;

    public class MainTest {
        public static void main(String[] args){
            MyClassInterface myClassImplementation = new MyClassImplementation();
            System.out.println(myClassImplementation.getName());
        }
    }
使用反射示例:

    package test;

    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;

    public class MainTest {

        public static void main(String[] args) 
                throws InstantiationException, IllegalAccessException, IllegalArgumentException, 
                InvocationTargetException, NoSuchMethodException, SecurityException  {

            //using reflection
            Object otherClassImplementation=null;
            try {
                Class<?> cls = Class.forName("test.MyClassImplementation");
                otherClassImplementation = cls.newInstance();

                Method method = cls.getMethod("getName");
                System.out.println(method.invoke(otherClassImplementation)); 

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
封装测试;
导入java.lang.reflect.InvocationTargetException;
导入java.lang.reflect.Method;
公共类测试{
公共静态void main(字符串[]args)
抛出实例化异常、IllegalAccessException、IllegalArgumentException、,
InvocationTargetException、NoSuchMethodException、SecurityException{
//使用反射
对象otherClassImplementation=null;
试一试{
Class cls=Class.forName(“test.MyClassImplementation”);
otherClassImplementation=cls.newInstance();
Method=cls.getMethod(“getName”);
System.out.println(method.invoke(otherClassImplementation));
}catch(classnotfounde异常){
e、 printStackTrace();
}
}
}

Hi,请添加一些代码,以便so社区可以更好地帮助您。我正在寻找回电的方法或方式。幸运的是,我的代码有点大。你想记录调用的函数是什么?反射可以帮助你“存储被调用的类”是什么意思?在问题中添加代码会更好!!