gpt4 book ai didi

Java语言: "this" keyword usage (used in Talend tJavaRow)

转载 作者:行者123 更新时间:2023-12-02 09:39:20 24 4
gpt4 key购买 nike

在Talend中,我正在编写一些小代码,元数据“代码”区域中的一个类,可以编写java类,然后在组件tJavaRow中,可以调用该类的方法。

所以当我创建类并在 tJavaRow 中写入类的名称然后一个点时,我遇到了这种情况,出现的上下文对话框没有显示方法,但显示了“this”关键字以及其他内容。我决定使用“this”,然后加一个点,然后出现上下文对话框以显示类中的方法。

我的问题是关键字“this”是否能够隐式地将类实例化为对象,因此这就是我能够看到该类的方法的原因?

我刚刚决定将我的一个方法更改为静态方法并以这种方式使用它。

那么关键字“this”可以将类实例化为对象而不使用“new”关键字将java类实例化为对象是否正确?

我对此做了一些研究,我发现了关键字“this”可以做的事情的列表。

Usage of this keyword

It can be used to refer current class instance variable.
this() can be used to invoke current class constructor.
**It can be used to invoke current class method (implicitly)**
It can be passed as an argument in the method call.
It can be passed as argument in the constructor call.
It can also be used to return the current class instance.
<小时/>

所以举一些代码示例来说明:假设我们有一个名为 mySphere 的类,并且有方法 mySurfaceArea 和 myVolume,我们可以通过以下方式调用该方法吗:

mySphere.this.mySurfaceArea();

mySphere.this.myVolume();

<小时/>

感谢您的意见!

我刚刚为此创建了自己的代码并运行它,但出现了错误:

public class MyClass {
public static void main(String args[]) {
int x=10;
int y=25;
int z=x+y;
int w;

System.out.println("Sum of x+y = " + z);
w = MyClass.this.myAreaCalc(x);
System.out.println("Area Calc is = " + w);
}

public int myAreaCalc(int A){
return A*A;
}

}


Error:
/MyClass.java:9: error: non-static variable this cannot be referenced from a static context
w = MyClass.this.myAreaCalc(x);
^
1 error




最佳答案

<ClassName>.thisthis 的快捷方式当您处于类上下文中时对象。

因为您位于 public static void main 的静态上下文中您无法从此处访问非静态实例。

您的代码需要实例化该类的对象并通过实例对象使用其非静态方法。

public static void main(String args[]) {
int x=10;
int y=25;
int z=x+y;
int w;

System.out.println("Sum of x+y = " + z);
w = new MyClass().myAreaCalc(x);
System.out.println("Area Calc is = " + w);
}

<ClassName>.this的用法在这种情况下是对外部类的引用:

public class A {
class B {
void x () { A outer = A.this; }
}
B create() { return new B(); }
}

在这种情况下,只有在 A 的实例上下文内部,您才能在示例中使用 B b = new A().create() 创建 B 的对象。或回答您有关上下文的问题

A ao = new A();
B b = ao.new B();

如果在两个实例上下文中具有相同的名称,则匿名类和子类上的 ClassName.this 的使用也可用于变量区分。

关于Java语言: "this" keyword usage (used in Talend tJavaRow),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com