Java从加载的类调用类函数

Java从加载的类调用类函数,java,classloader,Java,Classloader,如果可能的话,我将如何在我加载的类中调用主类中的函数?(我知道这是不可能理解的,所以我会解释) 即: 所以我最终会有两个文件:SomeClass.class和LoadedClass.class。我想我的主要问题是,如何引用LoadedClass中的某个类 **编辑: 所以也许我应该更好地解释这个用例。java程序从文件夹中动态加载“SomeClass”脚本。然后,该脚本从internet下载一个.jar文件,并在其中打开并运行“LoadedClass”脚本。如果某个类不在同一个.jar或.jar

如果可能的话,我将如何在我加载的类中调用主类中的函数?(我知道这是不可能理解的,所以我会解释)

即:

所以我最终会有两个文件:SomeClass.class和LoadedClass.class。我想我的主要问题是,如何引用LoadedClass中的某个类

**编辑:

所以也许我应该更好地解释这个用例。java程序从文件夹中动态加载“SomeClass”脚本。然后,该脚本从internet下载一个.jar文件,并在其中打开并运行“LoadedClass”脚本。如果某个类不在同一个.jar或.jar中,我如何在LoadedClass中的某个类中使用函数?

您只需这样做

如果它们在不同的包中,则必须导入类或使用完全限定名

让我看看我是否明白了

检查此正在运行的示例,并对源代码进行修改:

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>
a所做的是将loader类的引用传递到loaded中,然后从那里…调用该方法

我希望这有帮助

编辑

根据您的评论,您需要的似乎是立即使用

我们称之为-->递归性(如果从调用的函数中调用相同的函数) 或者干脆。。重定向。。您将一点一点地了解编程的潜力:D

欢迎来到StackOverflow:D
祝你好运

因为如果从另一个类调用一个类,则需要在调用之前创建一个对象。(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
    }
}

欢迎来到堆栈溢出!我想我不完全理解你的问题。你能详细说明一下你正在尝试做什么,以及为什么你目前的方法不起作用吗?嗯,我还没有真正尝试编译它。我想我应该试试。也许我有恐惧症。当然,这两个都不在任何包中。我正在为一个只需要您实现其接口的程序编写脚本。我想编写一个加载不同脚本的加载程序。因此,加载程序或脚本都不在任何包中。那么我该如何引用它们呢?或者我必须引用它们吗?如何使用Class.newInstance()传递参数?哦。。我懂了。你不能,你必须用
class.forName()
加载类,然后从返回的类objetct中获取一个接收类型的构造函数,然后用
构造函数创建它。newInstance
方法:你要找的是“反射”,我能够编译代码并运行它。除了调用onStart()函数外,我得到一个java.lang.NoClassDefFoundError。我尝试编译。它不知道我试图从哪个类调用。因为如果你从另一个类调用一个类,你需要先创建一个对象。(OOP)看看大答案示例:
classx{public functionX(){}}classy{public functionY(){X object=new X();//创建一个对象来访问函数X object.functionX();//从类X}调用函数
问题仍然在于,X和Y都不在一个包中,而是在不同的文件中。在这种情况下,您如何引用它们?即使它们是单独的文件。。如果它们在同一个
项目中
,您可以调用它。但是,在外部创建对象。我更新我的答案
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
    }
}