代码之家  ›  专栏  ›  技术社区  ›  Hamid

Android,避免在方法中为每个属性键入对象名?

  •  0
  • Hamid  · 技术社区  · 15 年前

    我有一个名为myClass的对象实例,我需要在对象中设置大约30个变量的值,我需要在类中执行大约30次(30个方法)。

    myClass.vOne
    myClass.vTwo
    ...
    myClass.vThirty
    

    有什么方法可以让我不必打900次“我的课”吗?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Blumer    15 年前

    如果我理解正确的话,你正在寻找一个类似于VB的构造 With . Java没有这样的构造,因为它通常被认为是一种坏的做法,因为它只为了保存击键而隐藏代码。

    您可以考虑两种选择:

    1. 在IDE中录制短宏
    2. 在执行质量特性操作之前,可以将对象的名称缩短为单个字符的名称。这仍然是模糊的东西,但它是尽可能接近你所寻找的。
        2
  •  2
  •   Thomas    15 年前

    如果有30个变量需要设置,则有30个变量需要设置。您可以创建一些函数,使您可以在单个调用中设置相关的项组。

    public void setStuffAboutThings(int a, int b, int c, int d, int e, int f) {
       vOne = a;
       vTwo = b;
       vThree = c;
       vFour = d;
       vFive = f;
    }
    
    ...
    
    MyClass.setStuffAboutThings(10, 20, 30, 40, 50);
    

    但实际上,如果要设置30个变量,就必须设置30个变量。您还可以键入要设置的所有成员变量,然后使用支持基于列的文本编辑模式的编辑器,只需一次插入“MyClass”30次。

    根据您的数据,也许您可以创建一个数组、列表或散列,并使用某种循环将值设置到其中。

    如果不知道更多的细节,就不可能指导你。

        3
  •  0
  •   Vladimir Ivanov    15 年前

    在你的类中编写一个方法,你可以从其他地方调用它。类似于:

    public void init(List<Object> args) {
       vOne = args.get(0);
       vTwo = args.get(1);
       ...
    }
    

    客户代码:

    List<Object> args = new ArrayList<Object>(30);
    args.add(1);
    args.add(2);
    ...
    myClass.init(args);