美好的一天!我有一个读取config.property文件的类,我需要从其他类访问该类的类变量。
将值从属性文件设置为类变量“gateway”的类:
SELECT *
FROM Course
WHERE CourseID
IN (Select CourseID
FROM Enrolment
GROUP BY CourseID
HAVING COUNT(CourseID) > 1)
从ReadPropertyFile类返回值的类:
此方法返回null:
public class ReadPropertyFile {
private String gateway;
public static void main(String[] args) {
ReadPropertyFile propCls = new ReadPropertyFile();
propCls.setVlue();
}
public void setValue(){
Properties prop = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {
// load a properties file
prop.load(input);
} catch (IOException ex) {
ex.printStackTrace();
}
// get the property value and print it out
gateway = prop.getProperty("gateway");
}
public String getGateway() {
return this.gateway;
}
}
此方法返回我的属性:
public class getVariable{
public static ReadPropertyFile propCls = new ReadPropertyFile();
public static String gateway = propCls.getGateway();
public static void main(String[] args) {
System.out.println(gateway);
}
}
有人可以解释我需要如何从第一个样本重写我的类,将ReadPropertyFile类的值设置为类变量getVariable类。
为什么我需要从getVariable类调用setValue方法来返回我的网关属性值。
谢谢!
答案 0 :(得分:0)
您的第一个示例不起作用,因为不会从任何地方调用setValue方法。为了使您的第一个示例正常工作,您必须将默认构造函数添加到 ReadPropertyFile 类,您可以在其中调用方法setValue()。
public class ReadPropertyFile {
private String gateway;
public ReadPropertyFile() {
setValue();
}
public void setValue(){
Properties prop = new Properties();
try (InputStream input = new FileInputStream("config.properties")) {
// load a properties file
prop.load(input);
} catch (IOException ex) {
ex.printStackTrace();
}
// get the property value and print it out
gateway = prop.getProperty("gateway");
}
public String getGateway() {
return this.gateway;
}
}
答案 1 :(得分:0)
如果以类getVariable作为主类运行程序,它将执行类getVariable的main方法,而不是类ReadPropertyFile的main方法。
解决此问题的一种方法是在类ReadPropertyFile的构造函数中调用setValue。另一种方式(更好的恕我直言)将在ReadPropertyFile中声明一个静态方法,它将创建一个实例,并调用setValue。
请注意,您在类名中使用动词的事实,是设计中出现问题的气味。