什么时候用static合适?

问题描述

有一个HTMLFilter类 如果我把doFilter做成static 就可以不new对象来用,很方便但这样就没法给它制造一个接口 我想问一下,static什么时候用比较好?

解决方案

无生命周期的用static,有生命周期的不用static。需要用到面向对象行为特征的不用static,static本身不属于面向对象范畴,用了static,无法多态。static是常驻内存的,不会被回收的,没有生命的。所以少用static。如果HTMLFilter是工具类,可以写成final类,private构造函数,成员函数均为static。这样这个类就彻底固化在内存了。
解决方案二:
一般来说,在常量类中定义常量,这些属性的值不会改变用static ;如果在过滤器或servlet、类中有一些程序要首先执行可以把它放在static块中;如果类与类之间要解耦可以用static;或者在类中使用静态方法可以用static

时间: 2024-10-03 22:11:50

什么时候用static合适?的相关文章

sqlserver-总提示找不到合适的驱动器,我jar包都引了

问题描述 总提示找不到合适的驱动器,我jar包都引了 package mytest3; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Test4 { public static void main(String[] a

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧!

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧! 图片上传是非常常见的功能,而多图上传在大多数应用中也是非常常见的,比如微信的朋友圈,微博的动态,都是有九宫格图片的,那这里肯定涉及了多图上传,所以今天我们来一起撸一下,怎么去思考这个实现逻辑! 这里我想到的思路是比较简单的,首先,我们有一个按钮,按钮是上传图片,点击之后弹出某个界面进行图片的选择,一般是九张图片或者十二张,选完之后就直接上传了,大致的流程应该是这个样子,那我们首先来写个按钮 activity_main.xml <?

Android使用criteria选择合适的地理位置服务实现方法_Android

本文实例讲述了Android使用criteria选择合适的地理位置服务实现方法.分享给大家供大家参考,具体如下: /* LocationActivity.java * @author octobershiner * 2011 7 24 * SE.HIT * 利用Criteria选择最优的位置服务,演示定位用户的位置并且监听位置变化的代码 * */ package uni.location; import android.app.Activity; import android.content.C

想将内存里的大量数据实时刷新在对话框上,用什么控件实现比较合适

问题描述 想将内存里的大量数据实时刷新在对话框上,用什么控件实现比较合适 想将内存里的大量数据实时刷新在对话框上,用什么控件实现比较合适CListCtrl,CListBox,还是CEdit 解决方案 CListCtrl,CListCtrl支持虚拟模式,也就是你不用把所有数据一次性加载到CListCtrl里,它可以只加载显示的部分,并且在用户拖动滚动条的时候才加载对应的部分. http://blog.csdn.net/love3s/article/details/8120975http://blo

mfc-MFC界面究竟如何实现自动缩放?为什么static里面的内容不会调整呢?

问题描述 MFC界面究竟如何实现自动缩放?为什么static里面的内容不会调整呢? MFC界面究竟如何实现自动缩放?为什么static里面的内容不会调整呢?已经写了OnSize了,如何具体完善呢? 解决方案 参考下:http://download.csdn.net/detail/qianlonglv/4632433 解决方案二: 使用相对坐标,在OnSize消息处理函数里对其他的控件做大小的计算和改变,OnSize只是在改变窗体大小时会走的一个消息函数,而改变窗体或者控件大小,要用MoveWin

c++-没有合适的默认构造函数可用

问题描述 没有合适的默认构造函数可用 头文件:#ifndef WEBKIT_VLC_H#define WEBKIT_VLC_H#include #include #include ""obj_openvlc.h""namespace Ui { class Webkit_VLC;}class Webkit_VLC : public QWebView{ Q_OBJECTpublic: explicit Webkit_VLC(QWidget *parent = 0); ~

gcc-交叉环境路径配置不合适

问题描述 交叉环境路径配置不合适 将将全志A80自带的A80-optimus中的交叉编译整体目录复制到/usr/local/gcc-linaro/bin,(工具是arm-linux-gnueabi-gcc) 在etc/environment中添加相应目录,然后查看arm-linux-gnueabi-gcc -v显示的是 Configured with: /scratch/cbuild/slave/slaves/oort14/crosstool-ng-linaro-1.13.1-2012.02-2

对象-对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?

问题描述 对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么? 第一种 { Object obj = new Object(); lock(obj) {} } 第二种 { Object obj = new Object(); lock(typeof(obj)) {} } 第三种 Private static Object obj = new Object(); { lock(obj) {} } 第四种 { lock(this) {} } 解决方案 msdn上说的很清楚 lock(thi

实例分析Java中public static void main(String args[])是什么意思_java

本文实例讲述了Java中public static void main(String args[])的来龙去脉.分享给大家供大家参考,具体如下: public static void main(String[] args) 这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要. jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法.这个方法必须是公有的,以便在任何位置都能访问得到.这个方法必须是static的,因为这个方法不能依赖任何该类的实例即可运行,而非stati