Java编程Tips

记录代码编程中一些小技巧(不定期更新ing)

1.死循环结构体使用

 一般编写死循环常用 while(true){},但是在阅读项目源码的时候,多数看到采用 for(;;){} 的形式。自己也查阅了
 一些博客,有的人说C++这样写,汇编指令 for 循环确实比while指令更少,但是java反编译之后两种方式都是一样的
 没有区别。所以,用何种方式更高效,就看自己的编码习惯了
 具体分析参考博客:https://blog.csdn.net/Message_lx/article/details/81075688

2.方法参数规范(Map慎用)

在任何业务代码里,Map都尽量不要作为函数的入参返回值
原因: 我们一般都是希望程序员能知道这个方法到底应该传什么参数,但map通常会让调用方发生不必要的困扰:我传过去的map到底是什么?有多少KV,Key有没有限制等等。无疑给阅读增加了额外的负担

3.创建工具类Util须知

1.使用Final关键字声明最终类

原因:当一个类被final修饰时,表名该类是不能被子类继承的。子类继承往往可以重写父类的方法和改变父类属性,会带来一定的安全隐患,因此,当一个类不希望被继承时就可以使用final修饰。
final修饰类 不能被继承,也没有子类。

【使用环境】:
1.不是专门为继承而设计的类,类的本身方法之间有复杂的调用关系。假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节
2.出于安全原因,类的实现细节不允许有任何改动
3.在创建对象模型的时候,确信这个类不会再被扩展。如:

api中的java.lang.string类 
public final class Stringextends Objectimplements Serializable, Comparable<String>, CharSequence

好处:可以阻止你的客户集成你实现的类,当你修改自己的库时,不用担心打乱客户的codes

2.工具类不能被实例化

原因:工具类是为了提供一些通用类的某一非业务领域内的公共方法,不需要配套的成员变量,仅仅是作为工具方法被使用。所以将它做成静态方法最合适,不需要实例化,能够获取到方法的定义并调用就行。

如果要实例化一个工具类,就需要一定的内存空间,工具类提供的是静态方法,通过类就能调用,所以不必浪费内存去实例化工具类对象。
那么如何让工具类不能被实例化呢?

让一个工具类不能被实例化的方法:使用私有构造器

public class A {
private classA(){}
}

由此想到让一个类不能被实例化应该怎么做?
使用私有构造器,在构造器中添加限制;
在使用私有构造器的基础下,再在构造方法中返回一个异常,因为虽然外部类无法实例化该类,但是内部类可以实例化该类。
如果只是通过私有化构造器,那么通过反射的方式,还是可以实例化该类。
必须在私有构造器中添加一个异常,这样,当执行构造方法的时候,就会抛出异常,从而停止实例化。

具体实现参考:如何让一个类不能被实例化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值