我有一堂課--> public class Machine我在那里聲明了一個靜態(tài)內(nèi)部類 --> public static class Parts在靜態(tài)內(nèi)部類中我聲明了兩個靜態(tài)方法 --> public static void engine() public static void battery()現(xiàn)在我想訪問我的主類應(yīng)用程序中的方法。我正在使用 Eclipse IDE。我做了—— Machine.Parts machine = new Machine.Parts(); machine.engine(); machine.battery();Eclipse 讓我這么做。但它給了我警告 -來自類型 Machine.Parts 的靜態(tài)方法引擎應(yīng)該以靜態(tài)方式訪問來自類型 Machine.Parts 的靜態(tài)方法引擎應(yīng)該以靜態(tài)方式訪問如何解決這個問題?我已經(jīng)嘗試過谷歌搜索和堆棧溢出之前的問題。但我無處能找到解決方案。我的代碼 -Machine.java -->package demo28;public class Machine { public static class Parts { public static void engine() { System.out.println("Machine engine is running"); } public static void battery() { System.out.println("Machine battery is charging"); } }}應(yīng)用程序.java -->package demo28;public class App { public static void main(String[] args) { run(new Machine.Parts()); } public static void run(Machine.Parts machine) { machine.engine(); machine.battery(); System.out.println(); }}輸出 -->機器發(fā)動機正在運行機器電池正在充電預(yù)期 --> 無警告實際 --> 收到警告
1 回答
牧羊人nacy
TA貢獻1862條經(jīng)驗 獲得超7個贊
這里:
Machine.Parts machine = new Machine.Parts();
您正在創(chuàng)建該內(nèi)部類的實例。然后你就去:
machine.engine();
...調(diào)用靜態(tài)方法,就好像它是該類的非靜態(tài)方法一樣。
是的,上面的代碼可以工作,但這是不好的做法。如果您打算擁有“真正的”非靜態(tài)方法,只需從方法簽名中刪除該關(guān)鍵字即可。否則,將代碼更改為:
Machine.Parts.engine();
因為這就是您的代碼示例中真正發(fā)生的情況。
添加回答
舉報
0/150
提交
取消
