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

使Java属性可跨类使用吗?

田阳泽
2023-03-14
问题内容

我选择采用属性文件来自定义某些设置。我使用以下代码在一个类中使Properties对象可用

Properties defaultProps = new Properties();
    try {
        FileInputStream in = new FileInputStream("custom.properties");
        defaultProps.load(in);
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

我是否必须将其添加到每个班级?可能不是因为那时每个类都会为此文件打开一个流。但是我不确定如何正确处理。我应该建立一个类MyProperties并在需要属性的任何类中实例化它吗?

提前致谢!


问题答案:

初始化之后defaultProps,您可以将其内容提供给应用程序中的其他对象,例如通过公共静态访问器方法,例如:

public class Config {
  private static Properties defaultProps = new Properties();
  static {
    try {
        FileInputStream in = new FileInputStream("custom.properties");
        defaultProps.load(in);
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
  public static String getProperty(String key) {
    return defaultProps.getProperty(key);
  }
}

这是最简单的方法,但是它会创建一个额外的依赖项,从而使单元测试更加困难(除非您提供了一种Config为单元测试设置模拟属性对象的方法)。

一种替代方法是向defaultProps需要它的每个对象注入(或从中获取单个配置值)。但是,这可能意味着如果您的调用层次结构很深,则需要向许多方法中添加额外的参数。



 类似资料:
  • 问题内容: 是否有可能使用Java Reflection打印出父类的属性。 问题答案: 是的,您可以执行以下操作:

  • 问题内容: 我想将一个对象添加到Global范围,并且为了构造它,我需要将其传递到文件的路径。我不想在源代码中对文件路径进行硬编码,因此我想从application.conf中获取该路径。 问题是我不知道如何从java类访问这些属性。我尝试了这个: 但是它以 NullPointerException 结尾。 假设我可以使用一个全局Configuration实例,这是我错了吗?谢谢。 问题答案: 尝

  • 我正在使用和,在属性映射期间我遇到了这个错误,我该如何修复它? 她的是我的 这里有一个Screenshottenter图像描述

  • 我有一个足球桌,我试图按赢得的比赛排序。 不知什么原因,我无法把桌子整理好。它只是停留在未排序的顺序中。我认为这与collection.sort位置的sortbyvalues函数有关。 你知道如何使用类中的won值对HashMap进行排序吗? 谢谢 感谢@Justin和@Falsarella。

  • LineSeries['areaStyle']的类型是AreaStyle | undefined 报错:类型“AreaStyle | undefined”上不存在属性“color”。 如何通过 LineSeries使用color属性的类型呢?

  • 问题内容: .fadeOut()方法可对匹配元素的不透明度进行动画处理。一旦不透明度达到0,显示样式属性将设置为none,因此该元素不再影响页面的布局,对fadeIn()相同。 我的问题是,他们是否可以使用可见性属性,以便它们的元素占据页面布局中的空间,而不仅仅是可见? 问题答案: 使用jQuery的fadeTo(),然后通过回调设置可见性。例: