Java 将其作为参数传递
我看到一些代码将关键字Java 将其作为参数传递,java,parameters,this,keyword,Java,Parameters,This,Keyword,我看到一些代码将关键字this作为输入参数传递。 例如: getContainer(this); 关键字这是什么意思?我听说它指的是类本身的一个实例(或者类似的东西),但是它是如何工作的呢?这个指的是调用了方法的当前实例 因此,它将引用传递给调用该成员方法的当前实例 class MyRunnable implements Runnable { Thread t; public MyRunnable() { this.t = new Thread(this); /
this
作为输入参数传递。
例如:
getContainer(this);
关键字
这是什么意思?我听说它指的是类本身的一个实例(或者类似的东西),但是它是如何工作的呢?这个
指的是调用了方法的当前实例
因此,它将引用传递给调用该成员方法的当前实例
class MyRunnable implements Runnable {
Thread t;
public MyRunnable() {
this.t = new Thread(this); //here it passes reference to current instance of `Runnable`
}
public void run() {
}
}
此
引用已调用方法的当前实例
因此,它将引用传递给调用该成员方法的当前实例
class MyRunnable implements Runnable {
Thread t;
public MyRunnable() {
this.t = new Thread(this); //here it passes reference to current instance of `Runnable`
}
public void run() {
}
}
在java中,我们有类并创建这些类的实例(对象)。因此,当对象需要指向或引用自身时,就会使用this关键字。在java中,我们有类并创建这些类的实例(对象)。因此,当对象需要指向或引用自身时,将使用this关键字。
关键字this只能在实例方法的主体中使用,
实例初始值设定项或构造函数,或在
类的实例变量。如果它出现在其他任何地方,则
发生编译时错误。当用作主表达式时
关键字这表示一个值,该值是对对象的引用
实例方法被调用(§15.12),或被调用的对象
构建。该类的类型是C类,其中包含关键字
这种情况发生了。在运行时,引用的实际对象的类
可以是C类或C的任何子类
[……]
关键字this也用于特殊的显式构造函数中
调用语句,它可以出现在
建造商主体(§8.8.7)
是的,一个类可以用this关键字来指代它自己。当方法中的局部变量与类成员变量具有相同的名称时,也需要使用this
关键字来区分它们。
关键字this只能在实例方法的主体中使用,
实例初始值设定项或构造函数,或在
类的实例变量。如果它出现在其他任何地方,则
发生编译时错误。当用作主表达式时
关键字这表示一个值,该值是对对象的引用
实例方法被调用(§15.12),或被调用的对象
构建。该类的类型是C类,其中包含关键字
这种情况发生了。在运行时,引用的实际对象的类
可以是C类或C的任何子类
[……]
关键字this也用于特殊的显式构造函数中
调用语句,它可以出现在
建造商主体(§8.8.7)
是的,一个类可以用this关键字来指代它自己。当方法中的局部变量与类成员变量具有相同的名称时,还需要使用this
关键字来区分这两个变量。也可以传递this
将调用类的实例传递给被调用的类。
比如说
public class Caller{
public void callerClassMethod1(){
new Called(this).
}
public void callerClassMethod2(){
}
}
class Called{
private Caller caller;
public Called(Caller caller){
this.caller=caller;
}
public void calledClassMethod1(){
//.... Do something before
caller.callerClassMethod2();
//..... Do something after
}
}
通过这种方式,您可以分离这两个类的职责,同时保持它们的耦合。也可以传递此
以将调用类的实例传递给被调用类。
比如说
public class Caller{
public void callerClassMethod1(){
new Called(this).
}
public void callerClassMethod2(){
}
}
class Called{
private Caller caller;
public Called(Caller caller){
this.caller=caller;
}
public void calledClassMethod1(){
//.... Do something before
caller.callerClassMethod2();
//..... Do something after
}
}
通过这种方式,您可以分离这两个类的职责,同时保持它们的耦合。这是一个参数而不是一个参数。这是一个参数而不是一个参数。