将实例变量作为参数传递给同一类中的方法?
Posted
技术标签:
【中文标题】将实例变量作为参数传递给同一类中的方法?【英文标题】:passing instance variable as parameter in method within same class? 【发布时间】:2012-03-15 19:50:27 【问题描述】:是否可以将实例变量作为参数传递给同一个类中的方法?
请看下面的代码:
public class Example
private int var1; //instance variable to be changed
public Example()
var1 = 0;
public void changeVar()
this.changeVar1(var1); //call method to change from within class
private void changeVariable(int variable) //changes passed instance variable
variable = 2;
在这个例子中使用它看起来很傻,因为你可以通过第一个方法调用 changeVar() 轻松更改 var1,但我有一个更复杂的程序,其中有多个实例变量(var1、var2、var3、var4.. .var10)。我试图编写一次 changeVariable() 并根据需要更改的内容传递每个实例变量,而不是为每个需要更改的实例变量编写单独的方法,即 changeVariable1、changeVariable2...changeVariable10。
【问题讨论】:
【参考方案1】:这不仅仅是愚蠢的 - 它不会起作用。 Java 中的参数总是按值传递。所以你的changeVariable
方法实际上只是一个无操作...它改变了参数的值,但这对var1
没有影响。
如果没有更具体的例子,很难知道这是否是一个好主意——我怀疑不是——但你尝试它的方式肯定行不通。
【讨论】:
(惭愧..我对java还是很陌生!)我正在尝试制作链表,其中每个变量都是对每个列表中第一项的引用。我基本上有10个清单。我还不能提供可靠的代码来展示,因为我还只是在计划阶段。 @jcaoile:您真的需要 10 个单独的列表变量吗?一个类包含 10 个列表变量听起来可能不是一个好的设计。也许是列表的集合?在不了解具体细节的情况下很难给出更多建议。 基本上,我有单独的列表来根据特定属性对数据进行排序/分组,该属性在关联实体类中定义(构成我的每个链接列表的“链接”)。您是正确的,因为列表是在一个基本上是集合类的类中定义的。在从您的回答和 Dave 下面的进一步研究之后,我开始认为最直接和最简单的方法是让一个方法更改每个实例变量,或者在这种情况下,引用每个单独列表的下一个链接。您同意这是一种明智的做法吗? @jcaoile:还不是很清楚,但听起来你有几个列表,长度都一样。最好有实体类型的 一个 列表。但我可能误解了。一个完整的例子会很有用。【参考方案2】:Java 不是这样工作的;您可以更改参数引用的对象的 属性,但不能更改参数本身的值。如果这是您的需要,您可能需要考虑一种不同的方法,也许是一张可以按名称引用的地图。
(从技术上讲,您可以将属性名称作为字符串传递并使用反射,但请不要。)
【讨论】:
以上是关于将实例变量作为参数传递给同一类中的方法?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以创建同一对象的不同实例并通过将参数传递给 Koin 中的 get() 函数来访问它们?