簡體   English   中英

來自已加載類的Java Call類函數

[英]Java Call class function from loaded class

如果可能的話,如何在我加載的類的Main類中調用函數? (我知道這是不可能理解的,所以我會解釋)

IE瀏覽器:

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中使用函數?

你就去做

如果它們在不同的程序包中,則必須導入類或使用完全限定的名稱。

讓我看看我是否明白。

通過修改源代碼來檢查此運行示例:

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>

所做的是將加載程序類的引用傳遞到已加載的文件中,然后從那里...僅調用該方法。

我希望這有幫助。

編輯

根據您的評論,看來您需要使用反射

您現在就做。

我們稱它為->遞歸(如果您從調用的函數中調用相同的函數),或者簡單地..重定向..您會逐漸了解編程的潛力: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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM