所以我正在学习java,我不知道如何使用字符串作为对象名称。
例如,假设我有3个不属于同一个类的对象,但它们都有变量a,b,c。我想要一个函数来修改这些变量,具体取决于我给出的对象名称,它的工作方式如下:
public void myFonction(String objectName)
{
objectName.a++; //of course that doesn't word
objectName.b=15;
//ect
}
这一定是非常简单的事情,但我在这个问题上发现的不适合这种情况或我不明白:)
答案 0 :(得分:1)
你想要的不像Java那样。
会这样做:
public class Parent {
protected int a;
protected int b;
protected int c;
}
然后你会
public class A extends Parent {
//add whatever else you need
}
public class B extends Parent {
//add whatever else you need
}
public class C extends Parent {
//add whatever else you need
}
最后你的方法是:
public void myFonction(Parent object)
{
object.a++;
object.b=15;
}
答案 1 :(得分:0)
如果它们都有变量a,b和c,为什么不让类扩展使用这些变量的主类。然后,您可以通过该主类调用该函数。
E.g。
Entity Class has variables a, b, c
public void myFunction(Entity entityName){
entityName.a++;
entityName.b=15;
}
Class Dog扩展了Entity,因此使用Dog实例调用myFunction将允许您编辑这些值,就像调用类Cat的实例一样,它也扩展了实体。
答案 2 :(得分:0)
您可以使用按名称存储对象的地图来执行此操作。
Map<String, YourObject> map = new HashMap<>();
map.put ("Name1", new YourObject("Name1"));
然后您可以按名称查找对象并操作
String nameInput = "Name1";
YourObject obj = map.get(nameInput);
obj.incrementCounter(); // assuming you have this method