Проще и правильней спроектировать, всегда сложнее чем реализовать.
Поэтому давайте глянем как все сделано в MidletPascal:
type
_record_ = record
x,y : integer;
end;
var
_real_ : real;
_integer_ : integer;
_char_ : char;
_boolean_ : boolean;
_string_ : string;
_http_ : http;
_resource_ : resource;
_recordstore_ : recordstore;
_command_ : command;
_image_ : image;
begin
_boolean_:=false;
_boolean_:=true;
_boolean_:=(3<>4);
delay(1);
end.
получаем на java:
public static int _real_;
public static int _integer_;
public static int _char_;
public static int _boolean_;
public static String _string_;
public static H _http_;
public static InputStream _resource_;
public static RecordStore _recordstore_;
public static Command _command_;
public static Image _image_;
т.е. фактически все вычисления и обработка данных ведется в Integer (real, integer, char, boolean)
__
Тип String стоит особняком, т.к. есть только инструкция для передачи/получения из стека, а если нужна обработка, то она производится в спец.классе, компилятор только загружает пераметры в стек и вызывает метод, и больше не имеет к этому ни какого отношения
__
http - как в случае и с типом String: вся работа в отдельном классе, на MP операции устанавливаются ссылки на методы H.class.
__
InputStream, RecordStore - указатели как и в обычной java
__
command и image - как и в обычной java
__
ну и последнее, пользовательские типы:
public class R_1 {
public int x;
public int y;
public R_1() {
x = 0;
y = 0;
}
public R_1 Copy(R_1 r_1) {
x = r_1.x;
y = r_1.y;
return this;
}
}
для нашего тип сгенерировался класс, с инициализацией элементов типа и оперицией копирования типа в тип.
====
Вот и все. Поправьте меня, если что-то упустил или написал не так...