2024年安卓最全Android中少用枚举类(enum)而多用@IntDef @StringDef,2024年最新android游戏开发入门题大学题

写在最后

对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。

![
[]


文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. 方法重载,每个类型要进行方法的重载

比如下面这段代码,使用枚举是很推荐的:

public enum UnitConverter{

METERS{

@Override

public double toMiles(final double meters){

return meters * 0.00062137D;

}

@Override

public double toMeters(final double meters){

return meters;

}

},

MILES{

@Override

public double toMiles(final double miles){

return miles;

}

@Override

public double toMeters(final double miles){

return miles / 0.00062137D;

}

};

public abstract double toMiles(double unit);

public abstract double toMeters(double unit);

}

不推荐的情况:

  1. 你的函数可以接受一种类型所有的值,而你所列出来的只是这些值里面比较重要的值

  2. 你的函数可以接受连续的数据

  3. 用于名称

  4. other…

4. 不使用枚举类型的解决方案

=================================================================================

既然使用枚举是因为参数的类型太泛了造成的类型不安全,那么我只要将参数限定在某一个类型集合里面

要将的@IntDef/@StringDef + @interface来进行限定参数

build.gradle 文件中添加依赖

dependencies {

compileOnly ‘com.android.support:support-annotations:25.1.0’

}

也可以使用对应的版本 compileOnly 是不会让 support-annotations 到下一个依赖库,如果想让下一个库依赖,请使用 api

特别的,如果是 app 出包,依赖必须使用 implementation

然后就可以使用注解帮助检查参数,代码如下

public class SexTest {

public final int MAN = 2;

public final int WOMEN = 3;

/**

  • 只能使用 {@link #MAN} {@link #WOMEN}

*/

@Documented // 表示开启Doc文档

@IntDef({

MAN,

WOMEN,

}) //限定为MAN,WOMEN

@Target({

ElementType.PARAMETER,

ElementType.FIELD,

ElementType.METHOD,

}) //表示注解作用范围,参数注解,成员注解,方法注解

@Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中

public @interface Sex { //接口,定义新的注解类型

}

public void setSex(@Sex int sex){

this.sex = sex;

}

}

如果我们尝试在调用setSex()方法的时候,传入不在限定之内的值,那么编译就不会通过,有错误提示

同理,我们也可以使用@StringDef

public class FlagContants {

public static final String UNDEFINE = “undefine”;

public static final String OK = “ok”;

public static final String ERROR = “error”;

private @FlagDef

String flag = UNDEFINE;

@Documented // 表示开启Doc文档

@StringDef({

OK,

ERROR

}) //限定为 FlagContants.OK, FlagContants.ERROR

@Target({

ElementType.PARAMETER,

ElementType.FIELD,

ElementType.METHOD,

}) //表示注解作用范围,参数注解,成员注解,方法注解

@Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中

public @interface FlagDef { //接口,定义新的注解类型

}

public @FlagDef

String getFlag() {

return flag;

}

public void setFlag(@FlagDef String flag) {

this.flag = flag;

}

}

5. AndroidStuido @*Def 模板

============================================================================================

自动模板,用于快速生产这种枚举类(智能模板不包括引包,引入包请手动,或者配置自动引入)

5.1 @IntDef 模板


  • 分组 Android

  • 名称 Abbreviation defInt

  • 描述 Description add Android IntDef Source block

  • Template text

@IntDef({

E N D END END

})

@Documented

@Target({

ElementType.FIELD,

ElementType.METHOD,

ElementType.PARAMETER,

})

@Retention(RetentionPolicy.SOURCE)

public @interface I n t D e f N a m e IntDefName IntDefNameDef {

}

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

**Android精讲视频学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值