将类中的属性加载到另一个类

时间:2015-11-11 16:53:11

标签: java properties

我试图将属性加载到某些脚本中。当我这样做时它会起作用:

public class MyClass {

    public static void myMethod() {
        Properties prop = new Properties();

        InputStream config = Properties.class.getResourceAsStream("/config/config");
        try {
            prop.load(config);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(prop.getProperty("placeholder"));

这将成功打印出值"占位符"在/config/config文本文件的控制台中。

我想让它变得更容易并实现数据抓取类,实现switch块来区分不同的属性文件。它如下所示:

public class Data {

    public static Properties getProperties(String file) {
        Properties prop = new Properties();

        switch (file) {
            case "config":
                InputStream config = Properties.class.getResourceAsStream("/config/config");
                try {
                    prop.load(config);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        case "objectlocations":
                InputStream objectlocations = Properties.class.getResourceAsStream("/properties/objectlocations");
                try {
                    prop.load(objectlocations);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
        return prop;
    }
}

使用这个类,根据我需要的属性,我可以调用我想要调用的文件。

这一切都会结束,直到我尝试将其重新放回MyClass.myMethod

public class MyClass {

    public static void myMethod() {
        Properties prop = new Properties();

        Data.getProperties("config");
        System.out.println(prop.getProperty("placeholder"));

像这样实现它打印出" null"在控制台中,告诉我属性永远不会从Data.getProperties("config");加载。

使用getProperties方法,我需要添加,移动或移除以成功加载属性?这是我的交换机的问题,如果是这样,我应该为每个文件制作不同的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题在于以下几行:

#include <stdio.h>

#include <string.h>

int main()
{
   FILE *fp1;
   fp1 = fopen("math.dat", "r");
   char ch;
   int i=0;

 while (1) {
      ch = fgetc(fp1);                       
      if (ch == '3')
          i++;
      if (ch == EOF)
          break;
}

   printf("there is : %d matches\n", i);

   return(0);
}

Data.getProperties行返回一个Properties类型,其中包含您要查找的信息。您需要将该对象分配给本地Properties对象。

如果您将上述行更改为Properties prop = new Properties(); Data.getProperties("config"); ,您将获得您正在寻找的对象。