Java 您如何制作一种方法,可以针对每个参数一次更改一个参数?
如何制作一个能够更改对象每个参数的方法(仅1个)?一次只能选择一个参数 我的想法是这样的。我得到了一个对象,有3个变量(例如,对象(第一,第二,第三)),我想更改对象的第一个参数,第二个和第三个 好的,我知道如何创建一个每次更改一个参数的方法(但是如果我想创建一个要求所有3个参数的方法,我需要创建3个或4个方法。)例如,但是有没有一种方法可以只创建一个方法,可以对每个参数都执行所有操作?例如Java 您如何制作一种方法,可以针对每个参数一次更改一个参数?,java,class,methods,Java,Class,Methods,如何制作一个能够更改对象每个参数的方法(仅1个)?一次只能选择一个参数 我的想法是这样的。我得到了一个对象,有3个变量(例如,对象(第一,第二,第三)),我想更改对象的第一个参数,第二个和第三个 好的,我知道如何创建一个每次更改一个参数的方法(但是如果我想创建一个要求所有3个参数的方法,我需要创建3个或4个方法。)例如,但是有没有一种方法可以只创建一个方法,可以对每个参数都执行所有操作?例如 double count(object.) /*After the point you can in
double count(object.) /*After the point you can input which
parameter you want to change. Method asks only for 1 object parameter,
but you can use this method for every parameter of the object. */
{
return object. +19;
}
当我想调用这个方法时,我可以这样做
count(object.first)
count(object.second)
你只需要一种方法就可以做到这一切。我真的不知道如何很好地解释它。你可以用它来获取Member的实例,但是这很重而且很慢。我想要一个HashMap
:
如果这些参数是对象,并且没有int或double之类的基元类型,那么您可以将它们传递到方法中,更改它们的属性值并保留它(不需要返回任何内容)。您的调用方法将能够处理这些更改。您的参数是按值传递的(这意味着您传递的对象将被复制,并且您的方法正在处理新的副本),但它们的属性仍然链接到内存中的同一区域(这意味着您对象的属性与对象副本的属性对内存的引用相同) 结果将是: 2. 3.
4如果我理解正确,这是不可能做到的(无需思考),除非你将所有属性存储在
地图中,我强烈建议你不要这样做。谁说他的所有属性都是数字类型的?我理解他的问题是这样的:“如何用一个方法替换所有setter,该方法可以修改类的给定属性,以便在添加属性时不必再添加另一个setter?”@jlordo我从count方法推断出这一点。但我不确定我是否完全理解了问题中的含义。
public class MultiCounter {
private Map<String, AtomicInteger> counters = new HashMap<>();
public synchronized int count(String name) {
AtomicInteger c = counters.get(name);
if (c==null) {
c = new AtomicInteger(0);
counters.put(name, c);
}
return c.incrementAndGet();
}
}
enum Key {
first,
second
}
private Map<Key, AtomicInteger> counters = new EnumMap<Key, AtomicInteger>(Key.class);
public synchronized int count(Key key) {
AtomicInteger c = counters.get(key);
if (c==null) {
c = new AtomicInteger(0);
counters.put(key, c);
}
return c.incrementAndGet();
}
int count = myCounter.count(Key.first);
public void testMethod() throws Exception {
MyObject param1 = new MyObject();
MyObject param2 = new MyObject();
MyObject param3 = new MyObject();
setCountUp(param1, param2, param3);
System.out.println(param1.getCount());
System.out.println(param2.getCount());
System.out.println(param3.getCount());
}
private void setCountUp(MyObject param1, MyObject param2, MyObject param3) {
param1.setCount(param1.getCount() + 1);
param2.setCount(param2.getCount() + 2);
param3.setCount(param3.getCount() + 3);
}
private static class MyObject {
private long count = 1;
public void setCount(long count) {
this.count = count;
}
public long getCount() {
return count;
}
}