1. class A{ 2. protected boolean equals(){ 3. return super.equals(); 4. } 5. }
时间: 2023-06-12 10:05:01 浏览: 116
这是一个定义类A的代码,其中重写了equals()方法。在该代码中,equals()方法被标记为protected,意味着它只能被类A及其子类访问。在方法主体中,调用了super.equals()方法,这将调用父类Object的equals()方法。因此,该代码并没有真正地重写equals()方法,而是调用了父类的实现。若要正确地重写equals()方法,应该根据需要自行实现相应的逻辑。
相关问题
编译并运行以下程序,以下描述哪个选项是正确的( ) 1. class A{ 2. protected boolean equals(){ 3. return super.equals(); 4. } 5. } A. 编译通过运行无异常 B. 编译通过但运行时出错 C. 行2出错,不能成功编译 D. 不能成功编译,行3出错
选项 C 是正确的。因为在行2中,equals() 方法的访问修饰符应该是 public 而不是 protected。在 Java 中,方法重写的访问修饰符不能比被重写方法的访问修饰符更严格。因为 Object 类中的 equals() 方法的修饰符是 public,所以子类中重写该方法时必须使用 public 访问修饰符。因此,行2会导致编译错误,无法成功编译。
package com.hmongsoft.merchant.Module.dataSource.onLine.V20230707; import android.os.AsyncTask; import com.hmongsoft.merchant.Base.Interface.ActionCallbackValue; import com.hmongsoft.merchant.Base.config.SysConfig; import java.io.IOException; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; /** * 校验商铺名称是否存在 */ public class JudgeMerchantIsExist { public JudgeMerchantIsExist(String merchantName, ActionCallbackValue<String,Boolean> actionCallback) { SignInTask signInTask=new SignInTask(merchantName,actionCallback); signInTask.execute(); } private static class SignInTask extends AsyncTask<String,Integer,Boolean>{ private String merchantName; private ActionCallbackValue<String,Boolean> actionCallback; private String requestResult; public SignInTask(String merchantName, ActionCallbackValue<String,Boolean> actionCallback) { this.merchantName =merchantName; this.actionCallback=actionCallback; } //异步前(UI) @Override protected void onPreExecute() { super.onPreExecute(); } //异步中(非UI) @Override protected Boolean doInBackground(String... strings) { OkHttpClient client = new OkHttpClient().newBuilder().build(); RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("merchantName",merchantName) .build(); Request request = new Request.Builder() .url(SysConfig.MerchantPORT+"/MerchantController/judgeMerchantNameIsExist") .method("POST", body) .build(); try { requestResult = client.newCall(request).execute().body().string(); if (requestResult.equals("true")){ return true; }else { return false; } } catch (IOException e) { e.printStackTrace(); return false; } } //异步后(UI) @Override protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); actionCallback.callback("result",aBoolean); } } } 这段代码的SignInTask已经被弃用,请帮换一个写法
package com.hmongsoft.merchant.Module.dataSource.onLine.V20230707;
import android.os.AsyncTask;
import com.hmongsoft.merchant.Base.Interface.ActionCallbackValue;
import com.hmongsoft.merchant.Base.config.SysConfig;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
/**
* 校验商铺名称是否存在
*/
public class JudgeMerchantIsExist {
public JudgeMerchantIsExist(String merchantName, ActionCallbackValue<String, Boolean> actionCallback) {
new SignInTask(merchantName, actionCallback).execute();
}
private static class SignInTask extends AsyncTask<Void, Void, Boolean> {
private String merchantName;
private ActionCallbackValue<String, Boolean> actionCallback;
public SignInTask(String merchantName, ActionCallbackValue<String, Boolean> actionCallback) {
this.merchantName = merchantName;
this.actionCallback = actionCallback;
}
@Override
protected Boolean doInBackground(Void... voids) {
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
String json = "{\"merchantName\":\"" + merchantName + "\"}";
RequestBody body = RequestBody.create(json, mediaType);
Request request = new Request.Builder()
.url(SysConfig.MerchantPORT + "/MerchantController/judgeMerchantNameIsExist")
.post(body)
.build();
try {
String response = client.newCall(request).execute().body().string();
return response.equals("true");
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
actionCallback.callback("result", result);
}
}
}