亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過在java中創建對象來引用接口

通過在java中創建對象來引用接口

UYOU 2021-12-10 14:59:34
一個類是否有可能通過使用接口引用來訪問另一個類的方法?假設,我有一個類,loginUIController.java我想從這個類訪問另一個類的方法mainController.java。但我不會直接訪問該方法。對于訪問方法,mainController.java我將使用其接口mainController.java是InferfaceMainController.java。以下課程是:-這里是 loginUIController.javapublic class LoginUIController{       InterfaceMainController mainController = null;  private void handleButtonAction(ActionEvent event) throws IOException   {       String userid = txt_username.getText();       String password = txt_password.getText();       mainController.checkLogin(userid, password);     }}接口主控制器:-public interface InterfaceMainController {    void checkLogin(String userid, String password);    void addContact(String name, String phone, String address, String email);  }主控制器:-public class MainController implements InterfaceMainController{    @Override    public void checkLogin(String userid, String password){        Users u = new Users();        u.setUserid(userid);        u.setPassword(password);        DBLayer db1 = new DBLayer();        try         {          if(db1.userExists(u))          {              System.out.println("login Success.");          }          else          {              System.out.println("login Failed.");          }        } catch (Exception ex) {            e.printStackTrace();        }    }}現在,如何訪問checkLogin(String userid, String password);的mainController.java從loginUIController.java通過創建的接口對象InterfaceMainController.java?
查看完整描述

4 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

從 的角度來看LoginUIController,沒有這樣的事情MainController。LoginUIController只知道大概InterfaceMainController。這基本上就是您在以下內容中定義的內容:


InterfaceMainController mainController = null;

要使用InterfaceMainController您的實例,首先需要接口的實現,在您的情況下是MainController. 然后,您創建一個實現實例:


InterfaceMainController mainController = new MainController();

最后,在您的情況下,您需要將實例提供給任何需要它的人LoginUIController。一種常見的方法是創建一個構造函數,如下所示:


public class LoginUIController

{

    InterfaceMainController mainController = null;


    public LoginUIController(InterfaceMainController mainController) {

        this.mainController = mainController

    }  

    ...

}

以上是Elliot引用的依賴注入示例。


查看完整回答
反對 回復 2021-12-10
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

你做這件事的方式并沒有什么區別。這真的是你的手柄。


InterfaceMainController foo = new MainController();


foo.checkLogin("me", "my password");

您可以將 foo 傳遞給任何需要 InterfaceMainController 的方法。但代碼在其他方面看起來相同。只是變量類型發生了變化。


查看完整回答
反對 回復 2021-12-10
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

從代碼片段來看,您似乎缺少一個實現接口的對象InterfaceMainController(在您的示例中,這將是 的實例MainController)。我可以想到兩個選項來解決這個問題:

  1. 將對象傳遞給 LoginUIController 的構造函數。

  2. 使用控制反轉 (IOC) / 依賴注入。

選項#1 就目前而言是可以的,但在這種方法中,您將負責對象生命周期和所有權。選項#2 不是 Java 語言功能,而是框架提供的功能,例如Spring。


查看完整回答
反對 回復 2021-12-10
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

是的,可以將MainControllerobj傳遞給InterfaceMainController引用變量。


沒有春天


InterfaceMainController mainController = new MainController();

使用 Spring 注解


如果您使用的是彈簧,那么您可以使用注釋來自動連接MainController對象@component以及@Autowired 類似的東西


@Component  

public class MainController implements InterfaceMainController {

  ........

}

和經銷商的線mainController與注解@Autowired這樣


@Autowired  

InterfaceMainController mainController


查看完整回答
反對 回復 2021-12-10
  • 4 回答
  • 0 關注
  • 246 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號