当前位置: 首页 > 面试题库 >

类构造函数中大量参数的优雅替代方法

公冶鸣
2023-03-14
问题内容

例如,我有一个构建GUI的类,一个处理GUI的所有事件的类以及一个主类,该主类包含受GUI对象(主要是滑块)影响的所有对象,以及GUI类和实例的实例。事件类。

现在,事件类的构造函数将GUI类和GUI更改的每个对象作为参数。这些是相当多的对象分配,因此我现在拥有的参数数量大约为8,并且还在不断增长。

对于我的问题,还有没有更优雅的解决方案,根本就不正确地讨论30个论点?

ps,我宁愿不合并类,因为这三个类都很大,会使所有内容的可读性大大降低。


问题答案:

您可以创建一个配置类,其中包含所有参数的默认值:

public class GUIConfig {

  private String name = "default";
  // more private declarations

  public GUIConfig() {
    // constructor, just for setting defaults
  }

  // getters and setters

}

现在,您可以像这样简单地创建您的GUI类实例:

GUIConfig guiConfig = new GUIConfig();
guiConfig.setName("foo");
// more setters
GUI myGUI = new GUI(guiConfig);

或仅使用默认值:

GUI myGUI = new GUI(new GUIConfig());


 类似资料:
  • Kotlin中的参数与Java中有些不同。如你所见,我们先写参数的名字再写它的类型: fun add(x: Int, y: Int) : Int { return x + y } 我们可以给参数指定一个默认值使得它们变得可选,这是非常有帮助的。这里有一个例子,在Activity中创建了一个函数用来toast一段信息: fun toast(message: String, length: I

  • 问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。

  • 问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案

  • 我是新手。我想在Person类驱动的Employee类中添加age参数。我怎么能在科特林做到?! 我的错误是这样的: 为什么不能在员工构造函数中使用var或val?!我犯了什么错误?

  • 我正试图编写一个简单的CRUD程序,我得到了这个错误。这个项目是基于我的项目。不知道我为什么不工作。 如果我注释掉构造函数,错误就会消失。我的房子里什么都没有。 有人能帮我一把吗? 这是我的代码: 实体/食品。JAVA 仓库/FoodRepository.java 控制器/食物控制器。JAVA 主课 波姆。xml

  • 实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?