标题冗长,可能令人困惑,但我不知道如何使它更好...我希望能够访问数组列表中的值并将其打印出来。
我有一个叫做ThingBagInterface的接口。ThingBagInterface只有一种方法,如下所示:
interface ThingBagInterface {
public String getType();
}
我现在有一个叫做ThingBag的类,它是一个包,里面有很多不同的东西,比如生物,建筑等等。
在ThingBag类中,我初始化了所有的生物,如下所示:
public void initCreatures(){
waterSnake = new Creature("Water Snake", Terrain.SWAMP, false, false, false, false, 1, 0);
etc...
}
然后我有一个函数populateBag(),如下所示:
public void populateBag(){
initCreatures();
bag.add(bears);
}
我的数组列表html" target="_blank">定义在ThingBag中,看起来像这样:
ArrayList<ThingBagInterface> bag = new ArrayList<ThingBagInterface>();
我的生物构造器如下所示:
public Creature(String n, Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int combat, int o){
name = n;
flyingCreature = flying;
magicCreature = magic;
canCharge = charge;
rangedCombat = ranged;
combatValue = combat;
owned = o;
}
我想把熊的名字打印出来。
所以我主要是这样做的:
ThingBag tb = new ThingBag();
tb.populateBag();
for(int i= 0; i<tb.bag.size(); i++){
System.out.println(i+". "+tb.bag.get(i));
}
为什么我不能访问我包里的名字?如果我没有使用界面,我可以说:
System.out.println(i+". "+tb.bag.get(i).name)
但是我现在不能。有什么办法能让我得到这个价值吗?我现在只能访问内存地址...
也许你可以做一个类似于soSystem的演员阵容。出来println(i)结核。袋子。)得到(我)
这是因为接口没有name属性。请记住,接口中的字段总是隐式公共的静态和最终字段。
我希望这有帮助。
您需要更明智地设计ThingBagInterface
接口。有名字是要求吗?如果是这样,接口需要一种访问对象名称的方法。(这需要是一个方法,因为接口不能指定字段。)当我们在做的时候,选择一个比ThingBagInterface
更有信息性的名字是个好主意。
您的bag
变量声明为
ArrayList<ThingBagInterface> bag ...
这在概念上意味着它至少包含ThingBagInterface
对象。它可以包含任何类型的ThingBagInterface
,但它必须至少是一个ThingBagInterface
。
这也意味着编译器只能保证它包含ThingBagInterface
,因此您只能作为ThingBagInterface
实例与其元素交互。
name
不是存在于ThingBag界面
类型上的字段,它存在于生物
上。
您可以强制转换bag的返回值。获取(i)
或声明ThingBagInterface
的getName()
方法,在子类型中实现它,并在循环中调用它。
问题内容: 例如, 我正在尝试使用运行时反射获取列表。 问题答案: 试试这个: 游乐场的例子 获取接口类型的reflect.Type是棘手的部分。请参阅如何获取接口的reflect.Type?进行解释。
我有一个问题: 我有一个列表Java,我填充了不同的值。例如,我有: 我也有其他价值观。现在,我想在这个列表中只搜索第一个字段。例如,我想要A的indexOf。我尝试过写这段代码: 但我得到-1作为回报。我想知道在加载数组时如何访问列表中的字段。
函数,我正在尝试访问令牌(末尾的注释行不起作用): 在这里可以看到调试器内部的结构:
问题内容: 该模块为通用类型提示提供了一个基类:该类。 方括号中的接受类型参数的子类,例如: 我的问题是,如何访问这些类型参数? 也就是说,作为输入,我如何获得和输出? 基本上我正在寻找这样的功能 问题答案: Python 3.8更新 从Python3.8开始,有: PEP-560还提供了,它允许我们使用第 n 个通用基的参数: 旧答案 可能性1 从Python 3.6开始。有一个公共和()字段。
我对打字稿有点陌生,让我有点困惑的一件事是类型/接口声明。我正在编写一个库,它目前有几个类和更多的类型/接口声明。我在大多数代码中使用这些类型/接口,最初我会将它们放在 types 文件夹中的单个文件中,然后我会将它们导入到需要的任何位置,现在我在 文件夹中有一个声明命名空间类型的 ,在这个中我导出我在整个代码中使用的所有类型/接口。这种方法可以吗,或者是否有更好的方法来组织类型和接口定义?
我使用包来做并行非负矩阵分解,即X=WH。我使用类中的方法。如下面描述中所提到的,所得矩阵存储在中。 在包的GitHub页面中,类是 你能解释一下如何从这个类中提取信息吗? 为了方便起见,我还把笔记本放在这里的Colab上。