首页 > 解决方案 > 方法java中的类参数

问题描述

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

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),但它仍然不起作用。我尝试了许多组合和修饰符,但仍然失败。如何?可能的?另一种方式?

标签: javaclassmethodsarguments

解决方案


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

AllDragons是一个静态类定义。您可以创建它的实例(就像您在 method 中所做的那样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 中存在一些编码约定

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

推荐阅读