[редактировать сводку о выпуске OP]:
Вам необходимо рассмотреть различие между примитивными и объектными типами в Java.
Примитивный тип может быть просто объявлен и использован:
int f; // Java (or is c? :)
f = 10;
Тип объекта должен быть выделен.(Для программистов на C: объекты Java распределяются динамически. Подумайте, куча, а не стек.)
Foo myFoo = new Foo(); // Java
struct foo *myFoo = (struct foo *) malloc(sizeof(struct foo)); // good old C
- первоначальный ответ -
Ваша путаница заключается в следующем:
Читая между строк, кажется, что вы думаете, что просто информируя систему типов о существовании расширения базы, вы сможете волшебным образом начать вызывать методы для этого типа .
И вот почему вы остановились на статических методах: они не требуют создания экземпляра - что вы, очевидно, отказываетесь делать!
Допустим, у вас есть что-то вродеОтвет Кая (который является правильным между прочим) выше.
Затем:
/** using Kai's classes */
public void foobar() {
YourClass foo = new YourClass();
foo.commonMethod(); // try it ..
}
Просмотрите то, что вы должны знаете о просто , определяя и используяstruct
в C
.
Теперь забудьте это:
typedef struct {
int foo;
char bar[3];
} extended;
extended s; // this is not just declaring s; it is also allocating it
s.foo = 10; // hey, no malloc. nasty Java insists on new ..
В Java, когда вы говорите:
SomeClass s; // s declared but not instantiated (think 'allocated')
, вы должны создать экземпляр объекта.
s = new SomeClass();