Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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_Serialization_Reflection_Constructor_Private - Fatal编程技术网

Java 使用私有字段和私有构造函数将对象写入文件

Java 使用私有字段和私有构造函数将对象写入文件,java,serialization,reflection,constructor,private,Java,Serialization,Reflection,Constructor,Private,我正在尝试将User类型的对象从arraylist写入一个文件,最好是CSV,但只要我能从文件中读回对象并将它们存储在arraylist中(用于获取对象的进一步信息),就没有那么重要了 我的问题是,不仅所有字段都是私有的,而且唯一的构造函数也是私有的。它是一个第三方类(User.class),不实现可序列化 我尝试了很多不同的方法来实现这一点,但问题总是来自构造函数。User.class没有默认构造函数。我一直看到的错误是“构造函数不可见” 我曾尝试使用反射来访问构造函数和字段,但似乎无法将它们

我正在尝试将User类型的对象从arraylist写入一个文件,最好是CSV,但只要我能从文件中读回对象并将它们存储在arraylist中(用于获取对象的进一步信息),就没有那么重要了

我的问题是,不仅所有字段都是私有的,而且唯一的构造函数也是私有的。它是一个第三方类(User.class),不实现可序列化

我尝试了很多不同的方法来实现这一点,但问题总是来自构造函数。User.class没有默认构造函数。我一直看到的错误是“构造函数不可见”

我曾尝试使用反射来访问构造函数和字段,但似乎无法将它们正确地连接起来


基本上,你会以什么方式处理这个问题?我应该继续反思吗?我好像在这里兜圈子

我将使用的一种方法如下:

  • 创建一个可序列化的类,该类是用户工厂,称为say UserFactory
  • 为要持久化的每个可序列化用户字段指定一个字段
  • 定义一个方法,该方法接受用户并将值保存到其自己的字段中。您可能需要更深入地了解可序列化的值
  • 定义工厂方法,该方法使用字段通过用户中的工厂方法创建用户

这样的对象是可序列化的,您只需在写入之前执行额外的步骤,即将用户对象放入,读取后取出用户对象。

如果对象具有私有构造函数,则必须在某个地方为其提供工厂方法。我假设这是类末尾的部分:“私有静态类UserFactory实现ItemFactory{method}”?我会想办法处理这些新信息的,谢谢!因为工厂方法也是私有的,所以我得到了同样的错误,但是使用工厂方法而不是构造函数,或者在某个地方必须有一个公共工厂方法。否则就没人能用了。或者一个受保护的工厂方法,或者包私有。如果是这两种情况中的任何一种,那么你就不走运了。没有-only:'私有静态类UserFactory实现ItemFactory{public User createItemFromElement(DomeElement元素){method}“-我还可以使用反射和访问私有构造函数吗?非常感谢您的输入-很有趣,我开始做类似的事情。只是需要更多的耐心和保证它确实会工作!