Нужно написать гуишное приложение с возможностью подключать модули (то есть плагины). Причём программа не должна перезапускаться при их подключение (должно всё применяться сразу же).
// Где-то там, где реализуется плагин
class MyClass implements MyPluginInterface {}
// У нас тут, в модульной софтинке
try {
Class c = Class.forName("com.vasyapupkin.MyClass");
} catch (ClassNotFoundException e) {
// log error
}
MyPluginInterface plugin = (MyPluginInterface) с.newInstance();
При подключении плагина будет изменяться главная форма программы, то есть будут появляться какие-то кнопки, поля и прочее.
правилен ли подход использования только одного сервлета, который принимает запрос, отдает его на обработку соответствующим модулям и затем отсылает ответ?
DispatcherServlet
из Spring MVC:инкапсуляция доходит до абсурда, и придется писать геттеры под каждый элемент или методы вроде addToCartButtonClick().
addToCartButtonClick
должен быть метод addProductToChart
, где PageObject уже решит, что ему нужно: кнопку нажать, ползунок потянуть и т.п., тогда это можно будет назвать инкапсуляцией и пропадёт абсурдность.virtual
(иначе будет вызываться метод из типа переменной-ссылки, не полиморфно), в Java же в угоду читаемости кода используется позднее связывание по умолчанию: все методы неявно "virtual", так что качество связывания отдается на откуп компилятору.final
, что запретит переопределять метод в наследниках, т.е. у компилятора появятся все полномочия жестко вбить необходимый адрес метода в точку вызова без страха, ибо альтернативных версий метода в наследниках просто быть не может.final
, а в C# - sealed
) TooLongNameException
и NegativePriceException
где-то выше станут ModelValidationException
, т.е. там вам достаточно знать, что модель кривая, вне зависимости от того, по какой причине это произошло.interruptionRequested
, например), которую треду необходимо проверять самостоятельно между атомарными операциями своей полезной нагрузки. ("Скопировал файл, проверил - false
, скопировал следующий, проверил - false
, скопировал еще один, проверил - true
, завершился").1) if ( *originalName )
при каких условиях оно срабатывает\не срабатывает.
0
, не срабатывает - в противном случае.2) while ( v6 )
как оно считает что пора бы и закончить?
0
.3) v6 = (originalName++)[1]
я так понимаю что тут берется первый элемент из originalName?
originalName
(до инкремента).4) unsigned __int16
есть ли аналог этому типу в jav'е?
long
вместит все его значения. sleep
.if(value.equals("OK")) { ... }
switch(value) {
case "OK": ... break;
case "Error": ... break;
}
boolean
или enum
-типы (если больше двух значений).enum Status {
Ok,
Error,
Warning
}
class Foo {
static void bar(Status status) {
if (status == Status.Ok) {
...
}
...
}
}