【问题标题】:'java.io.ObjectOutputStream' is deprecated - an error in Intellij IDEA'java.io.ObjectOutputStream' 已弃用 - Intellij IDEA 中的错误
【发布时间】:2017-05-31 18:19:16
【问题描述】:

我有这个代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;

public class EmployeeProcessor {
    public static void main(String[] args) {
        Employee employee = new Employee();
        employee.lastName = "Smith";
        employee.firstName = "Adam";
        employee.id = 123456789;
        employee.salary = 50000;

        try(FileOutputStream fileOutStr = new FileOutputStream("Employee.ser");
            ObjectOutputStream objectOutStr = new ObjectOutputStream(fileOutStr)) {

            objectOutStr.writeObject(employee);
            System.out.println("An employee is externalized into the file Employee.ser");

        } catch (IOException ioError){
            ioError.printStackTrace();
        }
    }
}

但是在 Intellij IDEA ObjectOutputStream 类是删除线像这样: screenshot。将鼠标指针指向上方时 - 出现此消息:'java.io.ObjectOutputStream' is deprecated。什么意思?

当我运行此代码时,IntelliJ 会打开“编辑配置”窗口,要求我介绍 VM 选项。但我将其留空并运行。

【问题讨论】:

  • 如果某些东西被弃用,这意味着它已经过时/使用危险。快速搜索显示虽然该类包含已弃用的方法,但该类本身似乎并未被弃用。这可能是一个 IntelliJ 错误。
  • Java 8 中已弃用的项目列表:Deprecated list
  • @Vusal,谢谢你的链接。但是ObjectOutputStream 类不在此列表中。
  • 是的。我发现只有 java.io.ObjectOutputStream.PutField.write(ObjectOutput) 已弃用。
  • java.io.ObjectOutputStream被弃用,任何另有说明的工具都是在骗你。

标签: java intellij-idea deprecated objectoutputstream


【解决方案1】:

IntelliJ IDEA 具有使用 External Annotations 支持将库类注释为已弃用的意图操作。您可能无意中触发了此意图操作。

对于以这种方式弃用的类,应该有相反的操作:Deannotate,但它可能不起作用 (bug reported)。

要手动修复它,请在SDK Annotations tab 中配置的目录中找到annotations.xml 文件并编辑/删除它。

更新:Deannoate 动作现在应该可以工作了,但只能在带注释的类本身内工作,而不是在其引用中。

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多