Передать класс как параметр в JavaScript для Java - PullRequest
0 голосов
/ 10 мая 2018

Итак, я недавно присоединился к проекту, в котором они используют Java в качестве бэкенда для игры и JavaScript в качестве интерфейса, который взаимодействует с сервером. Я знаю, что JavaScript динамический и это нормально, но если я запрашиваю информацию с сервера, где у них есть такие методы, как ...

public <T extends Component> T getProperty(Class<? extends Component> property, int id) {
    return (T) mapper.get(property).get(id);
}

Вы можете увидеть проблему здесь, верно? Как бы я точно сделал запрос в JavaScript, передавая .class в качестве параметра? Я пытался исследовать онлайн, но не кажется, что это частый вопрос?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вместо этого вы можете отправить имя класса:

public <T extends Component> T getProperty(String propertyClassName, int id) {
    return (T) mapper.get(Class.forName(propertyClassName)).get(id);
}

Обратите внимание, что это признак тесной связи между клиентом и сервером. Существуют альтернативные механизмы уровня протокола для передачи этой информации, например, просто основанные на перечислении «типы», которые упрощают документирование и минимизируют взаимное влияние изменений между сервером и клиентом.

0 голосов
/ 10 мая 2018

Язык интерфейса не имеет значения.

Подумайте об этом - как интерфейс взаимодействует с сервером? Я полагаю, он проходит через HTTP, верно? Поэтому независимо от того, какой у вас язык, он должен создавать стандартный HTTP-запрос, который имеет несколько заголовков, полей и т. Д.

Я не знаю ваш проект, но обычно вызов из внешнего интерфейса преобразуется через некоторый компонент в стандартный экземпляр Java, поэтому вы можете эффективно его использовать (т.е. получать данные формы или JSON и создавать экземпляр класса с этими полями)

...