如何控制一个类只有10个实例?我的有怎么修改,解决有分

zhqlchy 2003-10-19 10:40:16
class OnlyTen
{
public int x;
static int num;
static{ num=0;}
static OnlyTen ten=new OnlyTen();
public OnlyTen()
{
num++;
if(num<=10){
return ten;
}
else{
System.out.println("you have already build ten !");
return ;
}
}
// private OnlyTen(int y){x=y;}
};
class OnlyTenExample
{
public static void main(String[] args)
{
OnlyTen ten[]=new OnlyTen[10];
for(int i=0;i<10;i++)
{
ten[i]=new OnlyTen();
System.out.println("Successful "+ten[i].x);
System.out.println(ten[i]);
}
OnlyTen more =new OnlyTen();
System.out.println(more);
System.out.println(more.x);
}
}
...全文
34 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
F1in2003 2003-10-19
  • 打赏
  • 举报
回复
可以用多例模式
1.
private static HashMap instances=new HashMap(10);
private OnlyTen onlyten;
private OnlyTen(){
instances.put(...)
}
public synchronized static OnlyTen getInstance(){

...
return new OnlyTen()
}

2.
private onlyten1=new Onlyten();
private onlyten2=new Onlyten();
...
private onlyten10=new Onlyten();
private OnlyTen(){}
public static OnlyTen getInstance(int num){
if(num==1){
return onlyten1;
}
if(num==2){
return onlyten2;
}
.....
if(num==10){
return onlyten10;
}
}



caoxmby 2003-10-19
  • 打赏
  • 举报
回复
简单的就这样:
public class OnlyTen{
private OnlyTen(){}
public static OnlyTen[] instances=new OnlyTen[10];
static{
for(int i=0;i<instances.length;i++){
instances[i]=new OnlyTen();
}
}

可以通过OnlyTen.instances[i]来访问这10实例。

}
alienbat 2003-10-19
  • 打赏
  • 举报
回复
指出你几个问题:
public OnlyTen()
{
num++;
if(num<=10){
return ten;
规定构造器的返回类型是void。如果你返回值,此方法便不再是构造器。


给你个构造方法:public OnlyTen() throws Exception
{
if(OnlyTen.num==10){throw new Exception e}
else{...}
}
不过没听说过构造方法抛出异常的,而且我也不能确定抛出异常会阻止实例化...你自己试试吧

62,614

社区成员

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

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