discko 2015-08-05 03:09 采纳率: 0%
浏览 2399

java中静态类作为方法的参数可以么,或者有什么替代的方案

我是初学者,正在制作一个打飞机的小游戏- -!。现在遇到一点问题,还请各位大神赐教。
问题描述:
我的敌机类Enemy下有多个属性(如位置坐标x和y、血量hp、姿态degree、速度speed、贴图bmp等),在实例化时可以通过下面的这条语句来实例化并初始化。

 new Enemy(x,y,hp,degree,speed,bmp)

由于敌机种类较多,我打算将这些数据静态化放在一个类Params中。Params下有多个子类,这些子类的属性列表完全相同且全为静态属性(也可直接是静态子类),仅数值不同。比如某两种型号的敌机e_plane01以及e_plane02:

 public class Params {

    static class e_plane01{
            public static int x=11;
            public static int y=12;
            public static int hp=13;
    }
    static class e_plane02{
            public static int x=21;
            public static int y=22;
            public static int hp=23;
    } 
}

那么问题就来了,我实例化时的代码就老长老长的:

 enemy01= new Enemy(Params.e_plane01.x, Params.e_plane01.y, Params.e_plane01.hp,…);

如果是在C里,那我完全可以把E_plane作为一个结构体模板(保证属性列表相同),并分别创建e_plane01、e_plane02等结构体节点(不同种类的敌机的同一属性不尽相同),再将结构体节点的指针作为参数传给别的函数去操作。但java中没有结构体,我有没有办法写出 enemy01=new Enemy(&Params.e_plane01);这样简练的句子呢?这样的话,我只需修改构造函数成这样就好了:

Enemy(struct E_plane *someStaticClass){
    this->x=someStaticClass->x;
    this->y=someStaticClass->y;
…
}

所以特此求教各位大神,有没有解决办法,或者是我数据结构存在问题,有没有什么其他方案?谢谢大家

  • 写回答

2条回答 默认 最新

  • 木大白易 2015-08-05 13:04
    关注

    既然属性是静态的常量,可以用枚举啊!

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog