【问题标题】:what does "this" keyword mean in a class that is implementing Interface (java)? how come it is sent as interface? [duplicate]在实现接口(java)的类中,“this”关键字是什么意思?它是如何作为接口发送的? [复制]
【发布时间】:2018-02-18 10:35:12
【问题描述】:

在这个类中有两个 this 关键字 一个用作上下文 另一个用作接口

这两者对于它们是什么方法是如何理解的?

 public class LoginActivity extends Activity implements LoginaView, View.OnClickListener {

private ProgressBar progressBar;
private EditText username;
private EditText password;
private LoginPresenter presenter;
/**
 * LoginActivity Overriden  Methods
 * */
@Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    progressBar = (ProgressBar) findViewById(R.id.progress);
    username = (EditText) findViewById(R.id.username);
    password = (EditText) findViewById(R.id.password);
    findViewById(R.id.button).setOnClickListener(this);

    presenter = new LoginPresenterImpl(this,new LoginInteractorImpl());
}
@Override protected void onDestroy() {
    presenter.onDestroy();
    super.onDestroy();
}
/**
 * View.OnClickListener Overriden  Methods
 * */
@Override public void onClick(View v) {
    presenter.validateCredentials(username.getText().toString(), password.getText().toString());
}
/**
 * LoginaView Overriden Methods
 * */
@Override public void showProgress() {
    progressBar.setVisibility(View.VISIBLE);
}
@Override public void hideProgress() {
    progressBar.setVisibility(View.GONE);
}
@Override public void setUsernameError() {
    username.setError(getString(R.string.username_error));
}
@Override public void setPasswordError() {
    password.setError(getString(R.string.password_error));
}
@Override
public void setOnUserNamePassWrong() {
    Toast.makeText(getBaseContext(),getString(R.string.username_or_pass_wrong),Toast.LENGTH_LONG).show();
}
@Override public void navigateToHome() {
    startActivity(new Intent(this, MainActivity.class));
    finish();}}

为什么它既作为上下文又作为接口发送?

【问题讨论】:

    标签: java interface parameter-passing


    【解决方案1】:

    'this' 是 java 中的一个引用对象,它引用当前对象。在您的情况下,它指的是 LoginActivity 类的对象。

    编辑: 我想补充一点,如果一个类实现了一个接口,那么可以通过使用接口的引用来引用该类的对象。更具体地说,假设我有一个名为“MyInterface”的接口。

    现在让类“MyClass”实现“MyInterface”。现在,如果存在接受“MyInterface”类型的引用的方法,那么我可以毫无问题地传递“MyClass”的对象。

    【讨论】:

    • 感谢回复。我的困惑在于这一行presenter = new LoginPresenterImpl(this,new LoginInteractorImpl());这里作为 LoginaView 接口发送,用于要实现的活动
    • 为更好理解而编辑。
    • 那是我的想法,但不确定。感谢@Ashutosh的明确答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2016-12-11
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多