【问题标题】:Class arguments inside method java方法java中的类参数
【发布时间】:2021-12-12 05:23:17
【问题描述】:

我找不到这方面的信息。 是否有可能,如果是,那么如何在方法中使用类参数?

public static class allDragons {
    String name;
    Integer resource;
}

public void MethodName() {
    dragonImage.setImageResource(rareDragon.resource); // here I would like to refer to the argument, but it doesn't work. 
}

ImageView dragon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dragon);

    dragonImage = findViewById(R.id.dragonimg);

    allDragons rareDragon = new allDragons();

    rareDragon.number = 1;
    rareDragon.resource = (R.drawable.dragon);
        
    ...

我发现我应该使用类似:setImageResource(allDragons().rareDragon.resource),但它仍然不起作用。我尝试了许多组合和修饰符,但仍然失败。如何?可能的?其他方式?

【问题讨论】:

  • 看起来您正在尝试使用不同方法的局部变量。虽然你不能这样做,但你可以将它的副本传递给不同的方法——例如,作为方法参数、类或实例成员。
  • @AndyThomas 你能告诉我如何在这个例子中以最简单和最有效的方式做到这一点吗?

标签: java class methods arguments


【解决方案1】:

也许我完全错了 - 我不太清楚你想要达到什么目的,但也许这可以帮助你找到答案。

AllDragons 是一个静态类定义。您可以创建它的实例(就像您在方法 onCreate() 中所做的那样)并将其分配给成员而不是局部变量:

public class OuterClass {

    public static class AllDragons {
        String name;
        Integer resource;
    }

    ImageView dragon;
    
    // In order to access "rareDragon" in any method of this class,
    // you need to create a member
    AllDragons rareDragon;

    public void methodName() {
        dragonImage.setImageResource(rareDragon.resource); 
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dragon);

        dragonImage = findViewById(R.id.dragonimg);

        rareDragon = new allDragons();

        rareDragon.number = 1;
        rareDragon.resource = (R.drawable.dragon);
    }
}

PS: 我修改了你的类/字段/方法名称。在 Java 中有一些 Coding Conventions 存在:

  • 类名应以大写字母开头
  • 方法名称和字段应以小写字母开头
  • 常量应该完全用大写字母书写

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2021-12-03
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多