java new对象

zdd2389 2014-06-05 01:45:35
问个基础的问题,比如一个类
class A{
private B b; //这是一个类
private C c; //这是另一个类
}

当我new 类A的时候,类B,和类C我还需要new吗?另一个问题类A的单例模式怎么写??
...全文
1670 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调Di程序猿 2014-06-06
  • 打赏
  • 举报
回复
必须要new,单例可以去看百度百科。3种模式任你选
teemai 2014-06-06
  • 打赏
  • 举报
回复
new 不 new是你的事,A初始化后,B,C 默认是没有new的
张含韵 2014-06-06
  • 打赏
  • 举报
回复
这个问题有点意思
YaMaHaHa01 2014-06-06
  • 打赏
  • 举报
回复
new 吧,实例化,分配内存空间。
levelnini 2014-06-05
  • 打赏
  • 举报
回复
你的A类只有声明,没有实际创建对象。new A类的时候没有对b和c进行任何初始化工作,所以A类中的b和c你无法使用。
zdd2389 2014-06-05
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
你没有在 A 的构造子中,或者 b 和 c 属性定义时进行显式对象初始化,所以你在 new A 的时候需要对它们进行初始化。 单例模式三要素:一个私有的本类的静态对象,一个私有的构造子,还有一个公开的提供私有对象访问的接口。实现这些就是单例。至于怎么写,看你环境的实现要求。
其实这个就是我想写A的单例造成的困扰,因为要做单例,所以A的构造就不能用了,至于b,和c的显式对象初始化。有两点考虑的地方,一个是因为本身是android程序,这样如果没有使用这个类A,可是因为b,和c的显式对象初始化导致了一些内存的浪费。第二则是B的成员变量有一个是软引用对象,如果单单只在类加载时初始化的话,后面不是有可能被回收,这样是不是有问题?
remember1989 2014-06-05
  • 打赏
  • 举报
回复
class A{
    private B b;  //这是一个类
    private C c;  //这是另一个类
}
这只是声明了:类 A 中包含两个类型分别为 B 和 C 的成员。而成员的值不会自动生成,必须要赋值才行,否则 b 和 c 就一直为 null。
grapepaul 2014-06-05
  • 打赏
  • 举报
回复
B和C需要new 单例楼上都说了
rumlee 2014-06-05
  • 打赏
  • 举报
回复
单例常用方式 class A{ private static A a = new A(); private A(){ } public static A getIns(){ return a; } }
Defonds 2014-06-05
  • 打赏
  • 举报
回复
你没有在 A 的构造子中,或者 b 和 c 属性定义时进行显式对象初始化,所以你在 new A 的时候需要对它们进行初始化。 单例模式三要素:一个私有的本类的静态对象,一个私有的构造子,还有一个公开的提供私有对象访问的接口。实现这些就是单例。至于怎么写,看你环境的实现要求。
yufengdxw 2014-06-05
  • 打赏
  • 举报
回复
需要New的 单子模式有饿汉式和懒汉式,你百度一下吧
tony4geek 2014-06-05
  • 打赏
  • 举报
回复
楼上很多种方法参考。。
Mr-稻帅 2014-06-05
  • 打赏
  • 举报
回复
class A {
	private B b;
	private C c;
	
	//如果需要用到 b 和 c的话就要new,如果不要用到,就可以不用new的
	private A(){
		b = new B();
		c = new C();
	}
	
	private static A a;
	
	public static A getInstance(){
		if(a==null){
			a = new A();
		}
		
		return a;
	}
}
希望对你有用。。。。
Defonds 2014-06-05
  • 打赏
  • 举报
回复
引用 5 楼 zdd2389 的回复:
[quote=引用 1 楼 defonds 的回复:] 你没有在 A 的构造子中,或者 b 和 c 属性定义时进行显式对象初始化,所以你在 new A 的时候需要对它们进行初始化。 单例模式三要素:一个私有的本类的静态对象,一个私有的构造子,还有一个公开的提供私有对象访问的接口。实现这些就是单例。至于怎么写,看你环境的实现要求。
其实这个就是我想写A的单例造成的困扰,因为要做单例,所以A的构造就不能用了,至于b,和c的显式对象初始化。有两点考虑的地方,一个是因为本身是android程序,这样如果没有使用这个类A,可是因为b,和c的显式对象初始化导致了一些内存的浪费。第二则是B的成员变量有一个是软引用对象,如果单单只在类加载时初始化的话,后面不是有可能被回收,这样是不是有问题? [/quote]没问题的,你考虑多了。还有,如果你用不着 b 和 c,可以考虑懒加载的。

62,615

社区成员

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

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