Потому что в вызове метода аргумент this
всегда (в неаккуратном режиме) передается объекту. То, что вы видите, - это объект String
, который был получен из примитивного строкового значения "test"
. Массив, на котором вы называете свой метод, уже является объектом, поэтому ничего не происходит, и вы просто получаете массив по-прежнему.
Если вы используете строгий режим, это приведение не происходит:
String.prototype.test = function() {
"use strict";
console.log(this);
};
var str = 'test';
str.test(); // logs "test"
, Если вы с "ресурсом" имеете в виду что-то достижимое через Class#getResource или ClassLoader#getResource, можно получить последнюю измененную метку времени через URLConnection:
URL url = Test.class.getResource("/org/jdom/Attribute.class");
System.out.println(new Date(url.openConnection().getLastModified()));
знать, что getLastModified () возвращается 0, если в последний раз измененный неизвестно, который, к сожалению, невозможно отличить от реальной метки времени, читающей "1-го января 1970, 0:00 UTC".
Apache Commons VFS предоставляет общий способ взаимодействия с файлами из различных источников . FileObject.getContent() возвращает объект FileContent, который имеет метод для получения последнего измененного времени.
Вот измененный пример с сайта VFS:
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.FileObject;
...
FileSystemManager fsManager = VFS.getManager();
FileObject jarFile = fsManager.resolveFile( "jar:lib/aJarFile.jar" );
System.out.println( jarFile.getName().getBaseName() + " " + jarFile.getContent().getLastModifiedTime() );
// List the children of the Jar file
FileObject[] children = jarFile.getChildren();
System.out.println( "Children of " + jarFile.getName().getURI() );
for ( int i = 0; i < children.length; i++ )
{
System.out.println( children[ i ].getName().getBaseName() + " " + children[ i ].getContent().getLastModifiedTime());
}
Проблема с url.openConnection (). GetLastModified ()
заключается в том, что getLastModified ()
в FileURLConnection создает InputStream для этого файла. Таким образом, вы должны вызвать urlConnection.getInputStream (). Close ()
после получения даты последнего изменения. Напротив, JarURLConnection создает входной поток при вызове getInputStream ().