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

标签 java android object

我有一个如下所示的类,有数百个方法:

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/

相关文章:

java从经常更新的文件中读取

java - 在 Java 中保存和加载

android - 通过 inflate 从合并布局到 RelativeLayout 的 XML 属性

javascript - 在 rxjs 中使用 .map() 添加属性

c++ - 从 C++ 中的函数返回全局对象

java - 使用 BufferWriter 从多个类写入同一文件

java - 为什么我没有得到真正的金额?

android - 在 Android 1.6 中对多个异步任务进行排队

java - 如何让异步任务在 Android 中完成

java - 将自定义对象数组保存到文件并在java中再次读取?