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