将所有常量放入一个类android

时间:2018-06-28 21:08:14

标签: java android class constants

也有一些类似的帖子,但是它们可以追溯到2010年初,所以我不确定情况是否有所变化。我刚刚返回了一些代码,审查者建议我将所有常量都放在一个类中,然后从那里调用它们。我该怎么做,这是正确的方法吗?如何声明和调用它们?

5 个答案:

答案 0 :(得分:6)

这是否是“正确的方法”主要取决于口味。这里没有对与错。

关于如何使用它们-只需创建一个带有一系列public static final字段的类:

public class Constants {
    public static final String FIRST_NAME = "Tarik";
    public static final String LAST_NAME = "Hodzic";
}

然后其他类可以只使用它们:

public class SomeClass {
    public String getFullName() {
        return Constants.FIRST_NAME + " " + Constabts.LAST_NAME;
    }
}

答案 1 :(得分:4)

这就是枚举的用途。

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

例如:您要引用某个类别中的类型。枚举将是由许多类型组成的类别。

那么只要您想使用它们,它就是:category.typeN。

这很好,因为如果类型名称更改了。在枚举中对其进行重构,它将更改所有“常量”

答案 2 :(得分:3)

您现在可以使用注释代替常量:

import android.support.annotation.IntDef;

import java.lang.annotation.Retention;

import static java.lang.annotation.RetentionPolicy.SOURCE;



@IntDef({
        TypeBodyItem.BODY_TYPE_UNKNOWN,
        TypeBodyItem.BODY_TYPE_HTML,
        TypeBodyItem.BODY_TYPE_ARTICLE,
        TypeBodyItem.BODY_TYPE_MEDIA,
})

@Retention(SOURCE)
public @interface TypeBodyItem {
    int BODY_TYPE_UNKNOWN = 0;
    int BODY_TYPE_HTML = 10;
    int BODY_TYPE_ARTICLE = 20;
    int BODY_TYPE_MEDIA = 30;
}

An articledocumentations有关注释。

答案 3 :(得分:2)

我使用的方法是这样,

对于整个系统共享的任何常量(例如REST端点URL),我会将其作为最终变量放在单独的常量类中。

对于任何特定于组件的常量(活动性,片段等),我将其作为组件本身的最终变量。

答案 4 :(得分:0)

常数类在这里

 public class Constants {
        /**
         * Object key prams when pass the json object from server.
         */
        public static final String KEY_EMAIL = "email";
        public static final String KEY_PASSWORD = "password";
        public static final String KEY_DEVICE_TOKEN = "device_token";
        public static final String KEY_DEVICE_TYPE = "device_type";
        public static final String KEY_NAME = "name";
        public static final String KEY_COUNTRY_CODE = "country_code";
        public static final String KEY_PHONE_CODE = "phone-code";
        public static final String KEY_GENDER = "gender";
        public static final String KEY_DATE_OF_BIRTH = "date_of_birth";
        public static final String KEY_USER_ID = "user_id";
        public static final String KEY_LIMIT = "limit";
        public static final String KEY_DRIVER_ID = "driver_id";
        public static final String KEY_LONGTITUDE = "logitude";
        public static final String KEY_LATTITUDE = "lattitude";
        public static final String KEY_RATING = "rating";
        public static final String KEY_DETAILS = "details";
        public static final String KEY_ACCESS_TOKEN= "access_token";
        /**
         * Fragments name
         */
        public static final String FRAG_ETA = "ETA";
        public static final String FRAG_ACCOUNT_FRAGMENT = "ACCOUNT_FRAGMENT";
        public static final String FRAG_SETTING_FRAGMENT = "SETTING_FRAGMENT";
        public static final String FRAG_MAP_FRAGMENT = "MAP_FRAGMENT";
        public static final String FRAG_FEEDBACK = "FEEDBACK";
        public static final String FRAG_RATE_FRAGMENT = "RATE_FRAGMENT";

        public static final String USA_CODE = "+1";

        public static final String DISTANCE_SEARCH = "DISTANCE_SEARCH";


    }