编写工具类的总结

本文介绍了如何设计高质量的工具类,包括使用static关键字确保随时可用、通过public权限确保随地可用以及通过方法重载和简洁参数确保方便使用。并以Java的System类为例,详细阐述了工具类的设计要素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具类的实现目标是:具有很强的通用性;能有较多的重载方法;尽量传递较少的参数;耦合度最好为零。随时,随地,方便的使用。

随时使用---因为用的比较多,可以考虑用static关键字修饰方法,使得方法在整个生命周期过程中一直处于加载状态,使用时不用重新加载。

随地使用---工具类的一个重要目标是给所有想用的,可能用到的人使用,所以一般的接口方法都设置成为public

方便使用---方法的重载要做足,方法的参数不能太复杂,功能细致,这样的方法就更灵活,应用范围就更广。

 

可以为自己写一个工具类的包(可以打包成jar包),到哪里都可以用。

 

让我们看一下好的工具类具体是个什么样子?

java.lang.System是个很好的例子。

System类定义为final

public final class System

 

声明了一个私有的不带参数的构造方法,这样使得使用者不可以将System类进行实例化。

/** Don't let anyone instantiate this class */

    private System() {

    }

 

System类里只有public private两种类型。PublicSystem对外提供的方法,private方法使其内部的实现更加结构合理。

除了上述的那个保护性的构造方法外,所有的方法,成员变量都是static的(private的方法也只有设置为static时,才能为publicstatic方法提供服务)。

 

public final static InputStream in = nullInputStream();

public final static PrintStream out = nullPrintStream();

public final static PrintStream err = nullPrintStream();

public static void setIn(InputStream in) {}

public static void setOut(PrintStream out) {}

public static void setErr(PrintStream err) {}

public static Channel inheritedChannel() throws IOException {}

public static

    void setSecurityManager(final SecurityManager s) {}

public static SecurityManager getSecurityManager() {}

public static native long currentTimeMillis();

public static native long nanoTime();

public static native void arraycopy(Object src,  int  srcPos,

                                        Object dest, int destPos,

                                        int length);

public static Properties getProperties() {}

public static void setProperties(Properties props) {}

public static String getProperty(String key) {}

public static String getProperty(String key, String def) {}

public static String setProperty(String key, String value) {}

public static String clearProperty(String key) {}

public static String getenv(String name) {}

public static java.util.Map<String,String> getenv() {}

public static void exit(int status){}

public static void runFinalization() {}

public static void runFinalizersOnExit(boolean value) {}

public static void load(String filename) {}

public static void loadLibrary(String libname) {}

public static native String mapLibraryName(String libname);

 

 

public(除了private外)成员变量前添加final,使得效率更高。

 

其它一些注意事项:

不要将工具类写的过大。一般的应用只会用到工具类的部分方法,全部写在一起就会让过多的没有用到的方法也加载到内存,占用资源。所以在工具类中最好以功能分类,放在一个package下。打包成jar文件,提高适用性。当然也可以开源代码,发布在网上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值