Результаты поиска
В чем смысл предупреждения о безопасности типа в некоторых приведениях Java дженериков?
В чем смысл предупреждения Java ?
Безопасность типов: приведение от объекта к List<Integer> фактически проверяется по списку стираемых типов
Я получаю это предупреждение, когда пытаюсь привести объект к типу с общей информацией, например, в следующем коде:
Object object = getMyList();
List<Integer> list = (List<Integer>) object;
Как я могу переопределить метод EJB 3 session bean с общим аргументом - если это вообще возможно?
Предположим, у вас есть следующие EJB 3 interfaces/classes:
public interface Repository<E>
{
public void delete(E entity);
}
public abstract class AbstractRepository<E> implements Repository<E>
{
public void delete(E entity){
//...
}
}
public interface FooRepository<Foo>
{
//other methods
}
@Local(FooRepository.class)
@Stateless
public class FooRepositoryImpl extends
AbstractRepository<Foo> implements FooRepository
{
@Override
public void delete(Foo entity){
//do something before deleting the entity
super.delete(entity);
}
//other methods
}
А затем еще один боб, который обращается к Бобу FooRepository :
//...
@EJB
private FooRepository fooRepository;
public void someMethod(Foo foo)
{
fooRepository.delete(foo);
}
//...
Однако метод переопределения никогда не выполняется при вызове метода delete компонента FooRepository . Вместо этого выполняется только реализация метода delete, определенного в AbstractRepository .
Что я делаю неправильно или это просто ограничение Java/EJB 3, что дженерики и наследование еще не играют хорошо вместе ?
Что это лучший способ, чтобы выполнить итерации через строго типизированный общего списка?
Как лучше всего перебирать строго типизированный универсальный список в C#.NET и VB.NET?
Сортировка IList в C#
Так что сегодня я столкнулся с интересной проблемой. У нас есть веб-служба WCF, которая возвращает IList. На самом деле ничего особенного, пока я не захотел разобраться с этим.
Оказывается, интерфейс IList не имеет встроенного метода сортировки.
В конечном итоге я использовал метод ArrayList.Adapter(list).Sort(new MyComparer()) , чтобы решить эту проблему, но он просто показался мне немного "ghetto".
Я играл с написанием метода расширения, а также с наследованием от IList и реализацией моего собственного метода Sort(), а также приведением к списку, но ни один из них не казался слишком элегантным.
Поэтому мой вопрос заключается в том, есть ли у кого-нибудь элегантное решение для сортировки IList
Дженерики в c# и доступ к статическим членам Т
Мой вопрос касается c# и как получить доступ к статическим мемберам ... Ну, я действительно не знаю, как это объяснить (что в некотором роде плохо для вопроса, не так ли?) Я просто дам вам пример кода:
Class test<T>{
int method1(Obj Parameter1){
//in here I want to do something which I would explain as
T.TryParse(Parameter1);
//my problem is that it does not work ... I get an error.
//just to explain: if I declare test<int> (with type Integer)
//I want my sample code to call int.TryParse(). If it were String
//it should have been String.TryParse()
}
}
Так что спасибо вам, ребята, за ваши ответы (кстати, вопрос в том, как бы я решил эту проблему без получения ошибки). Это, наверное, довольно простой вопрос для вас!
Спасибо, Никлас
Edit: спасибо всем за ваши ответы!
Хотя я думаю, что фраза try - catch является самой элегантной, я знаю по своему опыту работы с vb, что это действительно может быть облом. Я использовал его один раз, и мне потребовалось около 30 минут, чтобы запустить программу, которая позже заняла всего 2 минуты для вычисления только потому, что я избегал try - catch.
Вот почему я выбрал утверждение swich в качестве лучшего ответа. Это делает код более сложным, но с другой стороны, я думаю, что он будет относительно быстрым и относительно легким для чтения. (Хотя я все еще думаю, что должен быть более элегантный способ ... может быть, на следующем языке, который я изучаю: P )
Хотя, если у вас есть какое-то другое предложение, я все еще жду (и готов принять участие)
Список или BusinessObjectCollection?
До появления универсальных моделей C# все кодировали коллекции для своих бизнес-объектов, создавая базу коллекций, реализующую IEnumerable
IE:
public class CollectionBase : IEnumerable
и тогда они получат свои коллекции бизнес-объектов из этого.
public class BusinessObjectCollection : CollectionBase
Теперь с общим классом списка, кто-нибудь просто использует это вместо этого? Я обнаружил, что использую компромисс двух методов:
public class BusinessObjectCollection : List<BusinessObject>
Я делаю это, потому что мне нравится иметь строго типизированные имена, а не просто передавать списки.
Каков ваш подход?
Почему я не могу явно передать аргумент типа в универсальный метод Java?
Я определил функцию Java:
static <T> List<T> createEmptyList() {
return new ArrayList<T>();
}
Один из способов назвать это так:
List<Integer> myList = createEmptyList(); // Compiles
Почему я не могу вызвать его, явно передавая аргумент универсального типа? :
Object myObject = createEmtpyList<Integer>(); // Doesn't compile. Why?
Я получаю ошибку Illegal start of expression от компилятора.