Статьи

Qt. Note: No relevant classes found. No output generated.

При написании кода фейкового клиента для unit-тестов столкнулся с такой проблемой, что препроцессор MOC не обрабатывал мой класс, выдавая предупреждение:

Note: No relevant classes found. No output generated.

Исходный код класса:

Теги: 

Использование строковых литералов в качестве аргумента шаблона.

Данная проблема заинтересовала меня благодаря одному из вопросов на сайте ru.stackoverflow.com. При написании статьи я руководствовался стандартом C++11 и использовал компилятор GCC 6.2.0.

Рассмотрим возможность применения строковых литералов (string literals) в качестве аргументов шаблона при инстанцировании. Например:

#include <iostream>

template<const char* s>
class A {
public:
    void foo() {
        std::cout << s << "\n";
    }
};

int main() {
    A<"Hello, world!"> a;
    a.foo();
    return 0;
}

Теги: 

Двухфазный поиск имён (two-stage name lookup).

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

#include <iostream>
#include <string>

std::string foo() noexcept {
	return "foo_free_function";
}

template<typename T>
class Base {
	public:
	std::string foo() const noexcept {
		return "foo_Base_function";
	}
};

template<typename T>
class Derived final : public Base<T> {
	public:
	std::string bar() const noexcept {
		return foo();
	}
};

int main() {
	Derived<int> d;
	std::cout << d.bar() << std::endl;
	return 0;
}

Как вы думаете, каков результат выполнения данного кода?

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

Теги: 

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 3.

1 часть.
2 часть.

Другое

1. Сравните интерфейсы java.util.Queue и java.util.Deque.

Согласно документации Deque ("дек", Double Ended Queue) - это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого реализации интерфейса Deque могут строится по принципу FIFO, либо LIFO.

Теги: 

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 2.

Продолжение ответов на вопросы.

1 часть.
3 часть.

Object.equals() + Object.hashCode()

1. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.hashCode() == ref1.hashCode()?

Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения.

2. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.equals(ref1) == true?

Да, могут. Для этого в классе этих объектов должен быть переопределен метод equals().

Теги: 

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 1.

Недавно обнаружил подборку из более чем 90 вопросов на эту тему - http://habrahabr.ru/post/232311. Решил попробовать ответить на все из них.

Если обнаружите какую-либо ошибку либо захотите дополнить - напишите мне, пожалуйста, в комментариях либо на почту.

2 часть.
3 часть.

Общая иерархия

1. Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap.

Теги: 

LazyInitializationException при использовании JSF SelectManyMenu.

Описание проблемы

Имеется коллекция сущностей (entity) JPA, которую необходимо использовать в качестве источника данных для компонента SelectManyMenu. В качестве JPA-провайдера используется Hibernate.

Часть кода JSF (PrimeFaces):

<p:selectManyMenu value="#{sourceBean.entitiesList}" converter="entityConverter">
     <f:selectItems value="#{sourceBean.selectedEntities}"
                    var="entity" itemLabel="#{entity.name}" itemValue="#{entity}" />
</p:selectManyMenu>

Компонент SelectManyMenu позволяет выбирать нужные элементы из списка.

Теги: 

Страницы