2014-09-14 2 views

Répondre

3

déclaration final vous permet d'écrire/lire dans, mais pas changer la référence de l'objet.

final File fileRef = new File("/path/to/my/file.txt"); 
fileRef = new File("/new/path/to/file"); // illegal 
2

Il n'y a pas de problème, final ne signifie pas que l'objet lui-même ne peut pas modifier son état. Cela signifie simplement que la variable ne peut pas être réaffectée. Donc, cela s'applique à une chose différente. En plus de cela, un File est juste une représentation abstraite d'un fichier ou d'un dossier du système de fichiers. Vous n'écrivez pas à travers un objet File, vous l'utilisez pour ouvrir un flux (par exemple, FileWriter).

2

Oui. Faire une variable final signifie que vous ne pouvez pas le changer pour pointer vers un objet différent. Cependant, vous pouvez faire tout ce que vous voulez avec l'objet sur lequel il pointe.

final File file = new File("foo"); 

Runnable r = new Runnable() { 
    public void run() { 
     file.renameTo("bar"); // Cool. 
     file.delete();   // Cool. 
     file = new File("bar"); // Whoa. Not cool. 
    } 
}; 
1

Un objet de File classe est une représentation abstraite d'un fichier ou un répertoire du disque dur réel. Ce n'est pas le fichier ou le dossier physique.

Si vous marquez la variable comme final, elle ne peut pas être réaffectée. C'est tout. Marquer la variable comme final ne rendra pas le fichier physique immuable. Si le Runnable est créé en tant que classe anonyme et que la variable File est locale à la méthode (paramètre ou variable locale), alors oui. Sinon, non.

Questions connexes