整个主类是个大型static会不会有什么不良影响?

walkuere 2016-07-21 09:07:54


public class voidMain extends JFrame{

public static voidMain gameInstance;


public static void main(String[] args) {
gameInstance=new voidMain();
}



然后我所有的东西都放在这个gameInstance里,其他地方夸区块调用的时候直接用voidMain.gameInstance
我这样做有没有什么隐患?因为我不太懂JAVA内部构造。
听人说static太大了会爆,那我这个是不是每次创建其他来的时候把句柄作为参数放到其他类里面才好啊。
...全文
250 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkuere 2016-07-26
  • 打赏
  • 举报
回复
引用 9 楼 zhongxuefeng98 的回复:
你这样写好么,个人技术也不是很好但是你在main去new自己的话那不就每次调用都得创建一遍这样子再写静态有意思么??你可以直接在voidMain方法直接写静态方法如:public static String get(){}之后想调用直接voidMain.get()。 还有一点类名要首字母大写VoidMain
你是说用静态方法来获取主程序入口对吧,但是如果我的主对象不是静态的,我如何用静态的方法获取到它呢,你们一般主入口是怎么写的?尤其我这个程序互相之间的强交互很厉害,经常要得到主程序的入口。
逗泥丸的平方 2016-07-26
  • 打赏
  • 举报
回复
引用 9 楼 zhongxuefeng98 的回复:
你这样写好么,个人技术也不是很好但是你在main去new自己的话那不就每次调用都得创建一遍这样子再写静态有意思么??你可以直接在voidMain方法直接写静态方法如:public static String get(){}之后想调用直接voidMain.get()。 还有一点类名要首字母大写VoidMain
在main里本来就是要每次启动做一遍.. main又没法调用 2333 其实整个程序的周期也就new了一次.. 当然写法上还是你说的好.我也让题主参考单例模式了. 看起来只是随手抽象了一个栗子,所以我也没强调代码规范,毕竟类名首字母小写了很多编译器都会给提示
逗泥丸的平方 2016-07-25
  • 打赏
  • 举报
回复
引用 5 楼 walkuere 的回复:
[quote=引用 3 楼 qq_35209952 的回复:] 看你做的规模有多大了.. 而且虽然你这样写了 毕竟我们也不知道它是用来干嘛的.. 也不太好判断. 如果就是一个自始至终一直存在的对象 , 那么也还好吧.. 当然,其实你这样也只是建了一个静态的全局对象而已. 其实比如缓存之类的,也都是这样实现的.
规模是比较大,这个对象就是主程序,其他所有的东西都在它的下面运行,确实是在程序关闭前都需要它的存在,这样会不会导致:一有限的静态空间如果被占满会有隐患,二,这样就等于把整个项目里的所有东西都放在静态内存中?[/quote] 倒没那么夸张.. 使用空间上,静态变量和普通的变量差距其实也不大,只是在虚拟机启动的时候在内存中分配好空间了. 你监视一下内存啥的,不出现异常应该也就好了. PS:你可以看看单例模式,你的voidMain应该只存在一个吧.
哈喽门 2016-07-25
  • 打赏
  • 举报
回复
你这样写好么,个人技术也不是很好但是你在main去new自己的话那不就每次调用都得创建一遍这样子再写静态有意思么??你可以直接在voidMain方法直接写静态方法如:public static String get(){}之后想调用直接voidMain.get()。 还有一点类名要首字母大写VoidMain
walkuere 2016-07-25
  • 打赏
  • 举报
回复
引用 7 楼 qq_35209952 的回复:
倒没那么夸张.. 使用空间上,静态变量和普通的变量差距其实也不大,只是在虚拟机启动的时候在内存中分配好空间了. 你监视一下内存啥的,不出现异常应该也就好了. PS:你可以看看单例模式,你的voidMain应该只存在一个吧.
是只有一个,这样我就放心了,谢谢你们
异常异长 2016-07-23
  • 打赏
  • 举报
回复
过多会导致性能问题 甚至内存泄漏
walkuere 2016-07-23
  • 打赏
  • 举报
回复
引用 3 楼 qq_35209952 的回复:
看你做的规模有多大了.. 而且虽然你这样写了 毕竟我们也不知道它是用来干嘛的.. 也不太好判断. 如果就是一个自始至终一直存在的对象 , 那么也还好吧.. 当然,其实你这样也只是建了一个静态的全局对象而已. 其实比如缓存之类的,也都是这样实现的.
规模是比较大,这个对象就是主程序,其他所有的东西都在它的下面运行,确实是在程序关闭前都需要它的存在,这样会不会导致:一有限的静态空间如果被占满会有隐患,二,这样就等于把整个项目里的所有东西都放在静态内存中?
逗泥丸的平方 2016-07-22
  • 打赏
  • 举报
回复
哦 隐患忘记说了,不过你应该也都知道... 除了内存占用之外,由于是静态的,所有使用到当前对象的地方,都会共享它的改变.(也许你的目的本来也就是这样) 当然多线程的时候尤其危险..
逗泥丸的平方 2016-07-22
  • 打赏
  • 举报
回复
看你做的规模有多大了.. 而且虽然你这样写了 毕竟我们也不知道它是用来干嘛的.. 也不太好判断. 如果就是一个自始至终一直存在的对象 , 那么也还好吧.. 当然,其实你这样也只是建了一个静态的全局对象而已. 其实比如缓存之类的,也都是这样实现的.
自由自在_Yu 2016-07-22
  • 打赏
  • 举报
回复
影响肯定会有的,static会一直占内存,知道程序停止,就是只要你的程序在运行,static就一直占内存,不会释放,如果占的很多,就会卡,运行慢

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧