2017-01-16 5 views
1

の誤差は、私はこのコードを持っている:'java.io.ObjectOutputStreamのは' 推奨されません - のIntelliJ IDEA

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構成オプションの導入を求める「構成の編集」ウィンドウを開きます。しかし、私はそれを空白にして、とにかく実行します。

+1

何かが非難された場合、それは時代遅れであり、危険な使用を意味します。しかし、クイック検索では、そのクラスには廃止予定のメソッドが含まれていますが、クラス自体は廃止されていないようです。これはIntelliJバグかもしれません。 – Carcigenicate

+0

Java 8で廃止予定のアイテムの一覧:[廃止予定のリスト](https://docs.oracle.com/javase/8/docs/api/deprecated-list.html) – Vusal

+0

@Vusal、リンクありがとうございます。しかし、このリストにはないクラス 'ObjectOutputStream'があります。 –

答えて

2

IntelliJ IDEAには、External Annotationsサポートを使用してライブラリクラスに注釈を付ける意図があります。あなたはおそらくこの意図のアクションを偶然引き起こしたでしょう。

annotate

逆の行動のはずが、この方法で非推奨クラスの場合

:Deannotate、それが動作しない場合があります(bug reported)。

手動で修正するには、SDK Annotations tabに設定されているディレクトリにあるannotations.xmlファイルを見つけて編集/削除します。

UPDATE:Deannoateアクションは、アノテーション付きクラス自体の内部で、参照からではなく、内部でのみ動作するはずです。

関連する問題