gpt4 book ai didi

java - 如何继承同一个类中的方法? java

转载 作者:行者123 更新时间:2023-11-30 07:11:34 25 4
gpt4 key购买 nike

我想继承同一个类中的方法。我创建了一个 connection(),并且我想从 remotecmnd() 方法继承它。我已经使用了 this.connection() 但仍然没有得到它。在connection()中,我声明了套接字变量和dataoutputstream变量。但remotecmnd()不能继承它。那么我该怎么办呢?

这是我的remotecmd():

public void remotecmnd(){
this.connection();
shutdn.setOnClickListener(
new View.OnClickListener() {
public String shutdn = "shutdown -s -t 10";
@Override
public void onClick(View v){
try{
out.writeBytes(shutdn);
Toast.makeText(MainActivity.this, "Shutdown Success", Toast.LENGTH_LONG).show();
}
catch (Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
);
restrt.setOnClickListener(
new View.OnClickListener() {
public String rest = "shutdown -r -t 10";
@Override
public void onClick(View v) {
try{
out.writeBytes(rest);
Toast.makeText(MainActivity.this, "Restart Success", Toast.LENGTH_LONG).show();
} catch (UnknownHostException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
);
lgo.setOnClickListener(
new View.OnClickListener() {
public String logoff = "logoff";
@Override
public void onClick(View v) {
try{
out.writeBytes(logoff);
Toast.makeText(MainActivity.this, "Logoff Success", Toast.LENGTH_SHORT).show();
} catch (UnknownHostException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
);
}

我的连接方法:

public void connection(){
try {
Socket cs = new Socket("192.168.1.100", 8002);
DataOutputStream out = new DataOutputStream(cs.getOutputStream());
if(cs.isConnected())
Toast.makeText(MainActivity.this, "Connected to Server", Toast.LENGTH_LONG).show();

} catch (UnknownHostException er) {
Toast.makeText(MainActivity.this, er.getMessage(), Toast.LENGTH_LONG).show();
} catch (IOException er) {
Toast.makeText(MainActivity.this, er.getMessage(), Toast.LENGTH_LONG).show();
}
}

这两种方法都在同一个类中。

最佳答案

这不是继承。您询问的是如何将被调用方法的局部变量传输到调用方法的范围,但这种方式是不可能的。

您可以通过将其设为字段来允许两种方法使用相同的变量

private DataOutputStream out;

public void remotecmnd(){
this.connection();
// access DataOutputStream using this.out or out here
...
}

public void connection(){
try {
Socket cs = new Socket("192.168.1.100", 8002);
out = new DataOutputStream(cs.getOutputStream());
...

但是,您需要注意这样一个事实:如果您在 connection 方法中捕获异常,该字段可能仍为 null,这可能会导致 空指针异常。您需要某种方法在 remotecmnd 方法中检查这一点,例如通过不捕获连接中的异常或重新抛出异常。

<小时/>

另一个选项是从 connection 方法返回 DataOutputStream:

public void remotecmnd(){
final DataOutputStream out = this.connection();
...
}

public DataOutputStream connection() {
...
return out;

关于java - 如何继承同一个类中的方法? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159493/

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