java.io.File - strange behaviour
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
filename='F:\__1\2\test files\file.bin';
success=java.io.File(filename).delete;
invoked from the Matlab Command Window - works,
running as a script - gives error:
"Static method or constructor invocations cannot be indexed.
Do not follow the call to the static method or constructor with any additional indexing or dot references.
MATLAB:staticMethodIndex"
Why is this so?
0 Commenti
Risposta accettata
Yair Altman
il 30 Dic 2018
With most Java methods, you can follow the method invocation parentheses with a dot, thereby chaining methods. For example: myJPanel.getComponent(0).getComponent(1).setVisible(false). However, such method chaining cannot be done with a constructor - it's valid syntax in Java, but Matlab's interpreter is not smart enough. In this case, simply separate the call into two parts:
filename='F:\__1\2\test files\file.bin';
jFile = java.io.File(filename);
success = jFile.delete;
3 Commenti
Yair Altman
il 17 Mag 2019
as far as I am aware, the behavior is the same in this regards in both the command window and scripts - in both cases you cannot chain methods to a Java constructor call, only to other methods.
John
il 17 Mag 2019
Nope, they are different. I just tested:
>> ls('D:\tmp')
Figure1.JPG
Figure2.JPG
>> filename = 'D:\temp\Figure1.JPG';
>> success=java.io.File(filename).delete
success =
logical
0
Put those exact lines into a script? and get:
>> Untitled7
Error: Functions cannot be indexed using {} or . indexing.
Error in Untitled7 (line 2)
success=java.io.File(filename).delete;
Conclusion: The parser in the command line, is different from the parser, that parses scripts... That's a bit of a surprise to me, but I'm not into the details of Matlab like you are.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Platform and License in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!