如果可能的话,我如何在我加载的类中调用Main类中的函数? (我知道这是不可能理解的,所以我会解释)
即:
public class SomeClass
{
public SomeClass
{
//load a class here
}
public void FuncToCall() {}
}
//In a separate file, dynamically loaded.
public class LoadedClass
{
public LoadedClass
{
//Call a function in the class that loads this
SomeClass.FuncToCall();
}
}
所以我最终会得到2个文件:SomeClass.class和LoadedClass.class。我想我的主要问题是,如何在LoadedClass中引用SomeClass?
**编辑:
所以也许我应该更好地解释用例。 java程序从文件夹动态加载“SomeClass”脚本。然后,该脚本从Internet下载.jar文件,并在其中打开并运行“LoadedClass”脚本。如果SomeClass不在同一个.jar或.jar中,我如何在LoadedClass中的SomeClass中使用函数?
答案 0 :(得分:0)
你就是这么做..
如果它们位于不同的包中,您必须导入该类或使用完全限定的名称。
让我看看我是否明白了。
检查此运行示例并修改源代码:
C:\Users\oreyes\java>type SomeClass.java LoadedClass.java Main.java
//SomeClass.java
public class SomeClass{
public SomeClass () /* added () */ {
//load a class here
LoadedClass lc = new LoadedClass( this );
}
public void funcToCall() {
System.out.println("SomeClass.functToCall: Being invoked :)");
}
}
//LoadedClass.java
//In a separate file, dynamically loaded.
public class LoadedClass {
public LoadedClass( SomeClass sc )/*added () */ {
//Call a function in the class that loads this
//SomeClass.funcToCall();
sc.funcToCall();
}
}
//Main.java
//
public class Main {
public static void main( String ... args ) {
new SomeClass();
}
}
C:\Users\oreyes\java>javac SomeClass.java LoadedClass.java Main.java
C:\Users\oreyes\java>java Main
SomeClass.functToCall: Being invoked :)
C:\Users\oreyes\java>
将装入程序类的引用传递给加载的是什么,从那里......只需调用该方法。
我希望这会有所帮助。
修改强>
根据您的评论,您需要的是使用Reflection
答案 1 :(得分:0)
你现在就做。
我们称之为 - >递归(如果从您调用的函数调用相同的函数) 或者只是..重定向..你一点一点地学习编程的潜力:D
欢迎使用StackOverflow:D 祝你好运!
答案 2 :(得分:0)
因为如果从另一个类调用一个类,则需要先创建一个对象。 (OOP) 示例:
Class X{ public functionX(){}}
Class Y {
X object = new X(); //Create an object to access to the function X
public functionY(){
object.functionX(); //you call the function from Class X
}
}