Данные API-интерфейса twitter на стороне сервера недоступны на стороне клиента [дубликат]

Необработанный тип - это имя общего класса или интерфейса без аргументов типа. Например, с учетом общего класса Box:

public class Box {
    public void set(T t) { /* ... */ }
    // ...
}

Чтобы создать параметризованный тип Box, вы указываете фактический аргумент типа для параметра формального типа T:

Box intBox = new Box<>();

Если аргумент фактического типа опущен, вы создаете необработанный тип Box:

Box rawBox = new Box();

. Поэтому Box является необработанным типом родового типа Box. Однако не общий тип или тип интерфейса не является сырым типом.

Необработанные типы отображаются в устаревшем коде, потому что многие классы API (например, классы Collections) не были типичными до JDK 5.0. При использовании сырых типов вы, по существу, получаете поведение перед генериками - Box дает вам Object s. Для обратной совместимости допускается присвоение параметризованного типа его необработанному типу:

Box stringBox = new Box<>();
Box rawBox = stringBox;               // OK

Но если вы назначаете сырой тип параметризованному типу, вы получите предупреждение:

Box rawBox = new Box();           // rawBox is a raw type of Box
Box intBox = rawBox;     // warning: unchecked conversion

Вы также получаете предупреждение, если используете необработанный тип для вызова общих методов, определенных в соответствующем родовом типе:

Box stringBox = new Box<>();
Box rawBox = stringBox;
rawBox.set(8);  // warning: unchecked invocation to set(T)

Предупреждение показывает, что необработанные типы обходят общие проверки типа, откладывая улов небезопасных код для выполнения. Поэтому вам следует избегать использования необработанных типов.

В разделе «Тип стирания» содержится дополнительная информация о том, как компилятор Java использует необработанные типы.

Непроверенные сообщения об ошибках

As упомянутый ранее, при смешивании устаревшего кода с общим кодом вы можете столкнуться с предупреждающими сообщениями, подобными следующим:

Примечание: Example.java использует непроверенные или небезопасные операции.

Примечание. : Перекомпиляция с -Xlint: не проверяется для деталей.

Это может произойти при использовании более старого API, который работает с необработанными типами, как показано в следующем примере:

public class WarningDemo {
    public static void main(String[] args){
        Box bi;
        bi = createBox();
    }

    static Box createBox(){
        return new Box();
    }
}

Термин «непроверенный» означает, что компилятор не имеет достаточной информации о типе для выполнения всех проверок типа, необходимых для обеспечения безопасности типа. Предупреждение «unchecked» по умолчанию отключено, хотя компилятор дает подсказку. Чтобы просмотреть все «непроверенные» предупреждения, перекомпилируйте с помощью -Xlint: unchecked.

Повторная компиляция предыдущего примера с -Xlint: unchecked показывает следующую дополнительную информацию:

WarningDemo.java:4: warning: [unchecked] unchecked conversion
found   : Box
required: Box
        bi = createBox();
                      ^
1 warning

Чтобы полностью отключить unchecked warnings, используйте флаг -Xlint: -unchecked. Аннотации @SuppressWarnings("unchecked") подавляют непроверенные предупреждения. Если вы не знакомы с синтаксисом @SuppressWarnings, см. Аннотации.

Исходный источник: Учебники по Java

6
задан fnsjdnfksjdb 20 November 2013 в 08:22
поделиться

3 ответа

одно лучшее решение

с использованием пакета Fiber

var Fiber = Npm.require('fibers');
...
Meteor.methods({
    callAsync: function (args) {
        var fiber = Fiber.current;

        async(function (args) {
            ...
            fiber.run(res);
        });

        return Fiber.yield();
    }
});
0
ответ дан Ivan M 21 August 2018 в 00:26
поделиться

Для кого-то нового для Метеор, который видит этот вопрос и задается вопросом , почему необходима библиотека, такая как Future или Fiber, это потому, что вызов amazon.execute является асинхронным.

В Javascript , многие операции, которые занимают длительный период времени, не запускают одну строку после следующего; Примеры, например, запись в базу данных с помощью window.setTimeout или выполнение HTTP-запросов. С такими методами, исторически вам нужно было обернуть код, который вы хотите запустить после факта в обратном вызове.

Future and Fibers обеспечивают синтаксический сахар и дополнительные функции, но их основная функциональность одинакова.

Meteor использует специальные закулисные трюки, чтобы сделать определенные встроенные операции (например, доступ к MongoDB) синхронными, хотя все еще использует повышенную производительность асинхронного кода. По этой причине вам обычно приходится беспокоиться об асинхронном использовании при использовании внешних пакетов (например, Amazon в этом примере).


Здесь полностью скомпоновано пример использования как Будущего, так и Волокна:

Есть несколько замечательных статей, объясняющих характер Sync / Async в Метеор на блоге Discover Meteor и в Метеорном Поваре

1
ответ дан Joshua Comeau 21 August 2018 в 00:26
поделиться

Методы Метеор являются асинхронными, вы можете получить результат многими способами.

Использование модулей модуля npm (другой ответ объясняет это очень четко).

Есть некоторые другие путь без использования модуля npm:

Через переменную сеанса:

    Meteor.call('myMethod',args, function(error, result) { 
  if (error) { Session.set('result', error) } // Note that the error is returned synchronously 
  else { 
    Session.set('result', result) // Using : Session.get('result') will return you the result of the meteor call !
  }
});

Или через шаблонную переменную:

    Template.hello.onCreated(function helloOnCreated() {
  // counter starts at 0
  this.message = new ReactiveVar(0);
});

Template.hello.helpers({
  message() {
    return Template.instance().message.get();
  },
});

Template.hello.events({
  'click button'(event, instance) {
    Meteor.call('myMethod', args, function (error, result) {
      if (error) { Template.instance().message.set(error); }
      else {
        Template.instance().message.set(result);
      }
    })
  },
});

Надеюсь, что это поможет!

1
ответ дан Rolljee 21 August 2018 в 00:26
поделиться
  • 1
    Я также сталкиваюсь с этой проблемой. Но я не хочу использовать модуль npm. Есть ли какой-либо пакет метеоров для этого, например, будущего волокна – Mariya James 25 September 2015 в 12:06
  • 2
    @MariyaJames проверяют новое редактирование, вы можете сделать это без модуля – Rolljee 26 December 2017 в 14:11
Другие вопросы по тегам:

Похожие вопросы: