android/java 概念用单个循环调用所有 getter 方法

发布于 2024-12-21 07:33:21 字数 734 浏览 0 评论 0原文

我正在做一项作业并陷入困境: 我有一个类,其中有 30 个 getter 和 setter 方法。

  public class example{

public String get1(){
 return someString1;
}

public String get2(){
return someString1;
}

public String get3(){
return someString4;
}

and so on...

public String get30(){
return someString30;
}

}

现在我想用一个循环调用所有 getter 方法,就像

for(int i= 1; i<=30;i++){
// String total = get1()+get2()+get3()...............
}

我应该做什么?

编辑:我使用反射做到了这一点:

http: //docs.oracle.com/javase/tutorial/reflect/member/methodInitation.html

谢谢 Ricky

I am doing an assignment and stuck at this point:
I have a class in which i have 30 getter and setter method.

  public class example{

public String get1(){
 return someString1;
}

public String get2(){
return someString1;
}

public String get3(){
return someString4;
}

and so on...

public String get30(){
return someString30;
}

}

Now i want to call all getter method with a single loop like

for(int i= 1; i<=30;i++){
// String total = get1()+get2()+get3()...............
}

what should i do?

Edit: i did it using reflection :

http://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html

Thanks Ricky

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

千紇 2024-12-28 07:33:21

注释代码是做到这一点的唯一方法。但这是你的设计不正确的征兆。您当然应该拥有一个 String[]List 类型的属性,而不是拥有 30 个 String 类型的属性。

然后你可以这样做:

List<String> list = getListOfStrings();
StringBuilder builder = new StringBuilder();
for (String s : list) {
    builder.append(s);
}
String concatenation = builder.toString();

The commented code is the only way to do that. But this is a symptom that your design is incorrect. Rather than having 30 properties of type String, you should certainly have one property of type String[] or List<String>.

Then you could do:

List<String> list = getListOfStrings();
StringBuilder builder = new StringBuilder();
for (String s : list) {
    builder.append(s);
}
String concatenation = builder.toString();
帥小哥 2024-12-28 07:33:21

如果这些是标准访问器,那么最好使用 List 并执行 get(index)

否则反射 hack

public class Example{

  private List<Integer> marks = new ArrayList<Integer>();

现在将帮助循环

for(int i= 1; i<=30;i++){
   total += marks.get(i);
}

If these are the standard accessors then better to go for List and do get(index)

else Reflection hack will help

public class Example{

  private List<Integer> marks = new ArrayList<Integer>();

now loop

for(int i= 1; i<=30;i++){
   total += marks.get(i);
}
巷子口的你 2024-12-28 07:33:21

只需重写示例类中的 toString() 方法,如下所示:

@Override
public String toString() {
  return someString1 + "  " + someString2 + "  " + someString3;
}

Just override the toString() method in the example class like this:

@Override
public String toString() {
  return someString1 + "  " + someString2 + "  " + someString3;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文