gpt4 book ai didi

java - 具有数百个方法的 Java 对象是否昂贵?

转载 作者:行者123 更新时间:2023-12-04 09:30:54 26 4
gpt4 key购买 nike

我有一个像下面这样的类,有数百种方法:

public class APIMethods {


public ToView toView;

public APIMethods(ToView toView) {
this.toView = toView;
}


public static final int SUCCESS = 1;
public static final int ERROR = 0;


public void registerAnonymous(String deviceId, String installRef, final int requestCode) {
APIInterface apiService =
RetrofitClientInstance.getRetrofitInstance().create(APIInterface.class);
JsonObject obj = new JsonObject();
obj.addProperty("androidId", deviceId);
obj.addProperty("projectId", 0);
obj.addProperty("ChannelName", installRef);
Call<Response<BasicUser>> call = apiService.registerAnonymous("application/json", Utils.getFlavorId(), obj);
call.enqueue(new Callback<Response<BasicUser>>() {
@Override
public void onResponse(Call<Response<BasicUser>> call, Response<Response<BasicUser>> response) {
Response<BasicUser> mResponse;
try {
mResponse = response.body();
if (mResponse.getErrorCode() == 0)
toView.updateView(requestCode, SUCCESS, mResponse);
else
toView.updateView(requestCode, ERROR, mResponse);
} catch (Exception e) {
mResponse = new Response<>();
mResponse.setErrorCode(-1);
toView.updateView(requestCode, ERROR, mResponse);
e.printStackTrace();
}
}

@Override
public void onFailure(Call<PetMarkResponse<BasicUser>> call, Throwable t) {
Response<BasicUser> numberValidationResponse = new Response<BasicUser>();
numberValidationResponse.setErrorCode(-1);
toView.updateView(requestCode, ERROR, numberValidationResponse);
}
});
}

///And dozens of such method
}
因此,在我的应用程序中随处可见的其他类中,我只需实例化该类并调用我想要的方法:
APIMethods api = new APIMethods(this);
api.registerAnonymous(Utils.getAndroidId(this), BuildConfig.FLAVOR, STATE_REGISTER_ANONYMOUS);
我的问题是这个对象(api)有多贵?请注意,在每个类中,都会调用对象的一些方法。

最佳答案

该对象根本不昂贵。
一个对象包含一个指向该对象类的指针,并且方法与该类一起存储。本质上,这些方法都是共享的。一个没有方法的类的对象和一个有 10000 个方法的类的对象大小相同(假设其他一切都相等)。
如果您有 100 个字段而不是 100 个方法,情况会有所不同。
您可能想考虑在一个类中拥有数百个方法是否是个好主意。代码是否易于理解和维护?这是“上帝对象”反模式的一个例子吗? https://en.m.wikipedia.org/wiki/God_object

关于java - 具有数百个方法的 Java 对象是否昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62849989/

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