如何在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社区可以更好地帮助您。我正在寻找回电的方法或方式。幸运的是,我的代码有点大。你想记录调用的函数是什么?反射可以帮助你“存储被调用的类”是什么意思?在问题中添加代码会更好!!