Когда я должен использовать бросок метода java 5 Класса?

publication_year не является столбцом в таблице wp_posts. См. Описание базы данных WordPress . Если параметр orderby недопустим, WordPress вернется к сортировке по умолчанию, которой является столбец post_date.

Если это мета-значение, вы должны использовать:

$args = array(
    'post_type' => 'publication',
    'post_status' => 'publish',
    'category_name' => 'my-category',
    'posts_per_page' => 20,
    'orderby' => 'meta_value_num',
    'meta_key' => 'publication_year',
    'order' => 'DESC',
    'paged' => $paged
);

См. Кодекс WordPress для дополнительной информации.

12
задан Steve Bosman 28 October 2008 в 15:49
поделиться

5 ответов

Эти операторы не идентичны. Метод броска является нормальным вызовом метода (invokevirtual Инструкция JVM), в то время как другой конструкция языка (checkcast инструкция). В случае Вы показываете выше, необходимо использовать вторую форму: (TrTuDocPackTypeDto) packDto

cast метод используется в отражающем программировании с дженериками, когда у Вас есть Экземпляр класса для некоторого типа переменной. Вы могли использовать его как это:

public <T> Set<T> find(Class<T> clz, Filter criteria) {
  List<?> raw = session.find(clz, criteria); /* A legacy, un-generic API. */
  Set<T> safe = new HashSet<T>();
  for (Object o : raw) 
    safe.add(clz.cast(o));
  return safe;
}

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

/* DO NOT DO THIS! */
List raw = new ArrayList();
...
return (List<Widget>) raw;

Компилятор предупредит Вас, Unchecked cast from List to List<Widget>, означая, что в замещающем знаке, кто-то, возможно, добавил a Gadget к необработанному списку, который в конечном счете вызовет a ClassCastException когда вызывающая сторона выполняет итерации по возвращенному списку (воображаемого) Widget экземпляры.

20
ответ дан 2 December 2019 в 07:22
поделиться

С первой формой

trTuDocPackTypdBd.update(TrTuDocPackTypeDto.class.cast(packDto));

можно сделать это:

public void dynamicCast( Class clazz, Object o ) { 
     this.x = clazz.cast( o );
}

Со вторым Вы не можете. Класс кастинга должен быть трудно кодирован.

Почему Вы использовали бы переменную для кастинга в первом месте? Это - другой вопрос.:) Первая вещь, которая приходит на ум, Вы не знаете (во время компиляции) класс, который будет литым к.

0
ответ дан 2 December 2019 в 07:22
поделиться

Основной случай для того, чтобы сделать его (IME) - когда необходимо безопасно бросить в универсальном классе/методе. Должный ввести стирание, Вы не можете бросить к T но если Вам предоставили a Class<? extends T> параметр затем, который можно использовать это для кастинга и результат, будет присваиваемым переменной типа T.

4
ответ дан 2 December 2019 в 07:22
поделиться

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

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

-3
ответ дан 2 December 2019 в 07:22
поделиться

Я не могу найти пример, где метод броска возможен и синтаксис броска нет. Однако смотря на код, кажется, что в случае, если бросок не возможен, метод броска бросает ClassCastException без присоединенной информации о типе, тогда как синтаксис броска даст Вам некоторые подсказки (поскольку в, "не мог бросить Излишне любопытный в TyrannosorusRex"):

/**
 * Casts an object to the class or interface represented
 * by this <tt>Class</tt> object.
 *
 * @param obj the object to be cast
 * @return the object after casting, or null if obj is null
 *
 * @throws ClassCastException if the object is not
 * null and is not assignable to the type T.
 *
 * @since 1.5
 */
public T cast(Object obj) {
if (obj != null && !isInstance(obj))
    throw new ClassCastException();
return (T) obj;
}
0
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

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