java - "this"关键字在实现接口(interface)(java)的类中意味着什么?怎么会作为接口(interface)发送呢?

标签 java interface parameter-passing

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

如何理解这两个方法的含义?

 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();}}

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

最佳答案

'this'是java中的引用对象,引用当前对象。在您的例子中,它指的是 LoginActivity 类的对象。

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

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

关于java - "this"关键字在实现接口(interface)(java)的类中意味着什么?怎么会作为接口(interface)发送呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48850683/

相关文章:

c# - 在类中添加不在接口(interface)定义中的公共(public)方法是一个好习惯吗?我什么时候应该这样做?

interface - TypeScript:使用 AMD 时类中的引用接口(interface)

c# - 扩展(而不是更改)新行为的搜索类?

dom - 使用带有 dom 元素的 jQuery 选择器

C:将 Struct 传递给 Function 不会导致按值操作调用

java - 将外部 jar 副本添加到项目

java - 有没有办法使用 google auto-ml 的rest api 生成客户端ID 和客户端 key ?

c++ - 从函数返回值 : reference vs struct

java - JFormattedTextField 和 NumberFormat 与 Float 一起使用

java - 使用 java mongo db driver api 将数组作为 MongoDB 中的值进行排序