Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 属性类构造函数描述的意义_Java - Fatal编程技术网

Java 属性类构造函数描述的意义

Java 属性类构造函数描述的意义,java,Java,对于属性类,我们将以下内容作为构造函数之一: Properties(Properties default) Creates an empty property list with the specified defaults “具有指定默认值的空属性列表”是什么意思 我编写了一个演示程序来测试正在发生的事情: import java.util.*; import java.io.*; public class test { private static String z;

对于属性类,我们将以下内容作为构造函数之一:

Properties(Properties default)
    Creates an empty property list with the specified defaults
“具有指定默认值的空属性列表”是什么意思

我编写了一个演示程序来测试正在发生的事情:

import java.util.*;
import java.io.*;

public class test {
    private static String z;
    private static String i;

    public static void main(String [] args) throws FileNotFoundException, IOException{
        z = "a";
        i = "b";
        Properties p = new Properties();

        p.setProperty("z",z);
        p.setProperty("i",i);
        p.store(new FileOutputStream("r.txt"), null);

        Properties pp = new Properties(p);
        pp.store(new FileOutputStream("random.txt"), null);
        pp.load(new FileInputStream("in.txt"));
        pp.store(new FileOutputStream("random1.txt"), null); 
    }
}

结果是
random.txt
为空,
random1.txt
具有
z=n
。新创建的属性没有默认值,因为
random.txt
为空。那么构造函数描述是什么意思呢?如果我在某个地方出错,请纠正我。

这意味着当它在运行时找不到属性时,它将返回默认属性,而不是复制构造函数

您可能想考虑使用。

< P> AS,默认属性(在属性(属性)构造函数中传递的那些)不被写入外部文件。显然,你认为这是(一个合理的假设)

以下测试:

import java.util.*;
import java.io.*;

public class test {
    public static void main(String [] args) {
        Properties p = new Properties();

        p.setProperty("z", "z value");
        p.setProperty("i", "i value");

        Properties pp = new Properties(p);
        pp.setProperty("i", "some other value");

        System.out.println(p.getProperty("z"));
        System.out.println(p.getProperty("i"));
        System.out.println(pp.getProperty("z"));
        System.out.println(pp.getProperty("i"));
    }
}
产出:

z value
i value
z value
some other value

如果在
存储
时需要包含默认值,一个选项是使用自己的类扩展
属性
,并重写
存储
,以输出默认属性。

属性pp=新属性(p)

这允许任意嵌套默认属性的级别

比如说

    Properties p = new Properties();
    p.setProperty("z","hello");
    p.store(new FileOutputStream("D://java1.properties"), null);
    Properties pp = new Properties(p);
    pp.setProperty("y","world");
    System.out.println(pp.getProperty("z")); //prints hello
如果在
pp
对象上调用
pp.getProperty(“z”)
,并且“z”不存在,Java会在默认属性对象
p
对象中查找“z”,在那里找到“z”并打印其值“hello”


有关更多详细信息,请查看:““具有指定默认值的空属性列表”是什么意思?”我的猜测是,如果没有将另一个具有与默认值相同键的属性添加到此新创建的列表中,但用户尝试按键获取该属性,则会返回默认值。如果该键(带有一个新值)后来被添加到列表中,并且用户试图通过同一个键获取属性,则它现在返回新值。@EvgheniCrujcov:会是什么?