Я знаю что пакет java.lang
автоимпортируется каждой программой Java, которую мы пишем, следовательно все классы в ней автоматически доступны нам.
Мой вопрос состоит в том почему не автоматический импорт java.util
и другие пакеты также? То верное сохранит некоторый ввод :)
Поэтому объясните, почему это не сделано.
, хорошая причина, причина не для автоматического использования слишком многое, чтобы избежать столкновений пространства имен. Если все в java.util
было импортировано автоматически, и тогда вы хотели обратиться к другому классу «карту», например, вам придется обратиться к нему по его полному квалификации.
В ответ на другие ответы в этой теме импорт
на самом деле не изменит внутреннее представление файлов классов. На самом деле, вот ссылка для спецификации JVM, описывающая структуру файла класса: см. Это импорт не сохраняется нигде.
unsigned int div3(unsigned int m) {
unsigned long long n = m;
n += n << 2;
n += n << 4;
n += n << 8;
n += n << 16;
return (n+m) >> 32;
}
-121--3428183- Я думаю, что идея java.lang заключается в том, что все эти классы имеют некоторую связь с языком и средой выполнения, которая является специальной, и не может быть реализована самостоятельно. Примитивные оболочки, безопасность и разрешения виртуальной машины и проверка, загрузка пакетов и классов - все вещи, которые должны быть встроены в систему Java. Всё в java.util, как и коллекции, хотя и невероятно полезно, могло быть реализовано в чистом Java. Некоторые его части (на ум приходят часовые пояса) даже были реализованы сторонними библиотеками еще лучше.
Или, по крайней мере, это было верно еще в Java 1.0 дней. Сегодня, например, Iterator также является неотъемлемой частью языка, так как он автоматически используется для - каждый цикл, верно? Но обратная совместимость всегда была большой вещью с Java, поэтому мы можем жить с этой несогласованностью вечно.
Все хорошие IDE воли автоматически разрешают ваш импорт, только подсказывая, когда есть конфликт (два пакета с тем же классом).
Если вы можете жить без эффекта затухания, это должно быть довольно просто:
function changeImage() {
var image = document.getElementById('coin1');
image.style.display = (image.style.display == 'none') ? 'block' : 'none';
}
setInterval(changeImage, 5000);
Пока затухание прохладно и все, это действительно делает код намного сложнее, когда мы не позволяем использовать внешние библиотеки. В основном, нужно будет иметь дело с дополнительными таймерами, срабатывая с очень короткими интервалами, изменяя непрозрачность целевого элемента на каждом обратном вызове.
Если вы действительно хотите замирать, см. "Руководство Javascript - простая анимация замирания" .
-121--4746520- Для простых приложений и внутренних
помощников я бы использовал статический метод. Для приложений с компонентами мне нравится Managed Extensiability Framework . Вот отрывок из документа, который я пишу, чтобы описать шаблоны, которые вы найдете в моих API.
I [ServiceName]
. В качестве надуманного примера:
public interface ISettingsService
{
string ReadSetting(string name);
void WriteSetting(string name, string value);
}
[Export]
public class ObjectRequiringSettings
{
[Import]
private ISettingsService SettingsService
{
get;
set;
}
private void Foo()
{
if (SettingsService.ReadSetting("PerformFooAction") == bool.TrueString)
{
// whatever
}
}
}
-121--655919- Поскольку java.lang имеют базовые классы языка Java, а java.util, например, нет.
Но некоторые другие языки, такие как Groovy, автоматически импортируют java.util для вас:)