На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> шаблон функции (метода) ?
    можно ли в яве сделать шаблон метода?

    Хочу сделать чтобы второй аргумент был шаблонным:
    ExpandedWrap disabled
          public Boolean SetValue(eMemberName eMU, byte tValue)
          {
                  ...
          }

    Если можно - подскажите как это делаеца? :huh:
      http://www.rsdn.ru/article/java/genericsinjava.xml
        по моему можно ето зделать в 1.4

        public interface IGeneric
        {
        //method declarations
        }


        public class Class1 implements IGeneric{}
        public class Class2 implements IGeneric{}
        ........
        public class ClassN implements IGeneric{}


        public class Main
        {

        public void func(int i, IGeneric obj)
        {
        //...........
        }
        }

        и по моему так даже лучше ;)
          Это не решает проблему при передаче аргументов простых типов. Придется заворачивать их в оболочки.
            в 1.4 нет шаблонов, или я не встречал, но ето можно симулировать самому, в зависимости от задачи
            Сообщение отредактировано: ruli -
              я сделал так:
              ExpandedWrap disabled
                public <T> boolean SetValue(eMemberName eMU, T t)
                    {
                ...


              Добавлено
              Lamer George, а шаблоны для простых типоф вообще не используюца как я понял... но в принципе для них уже есть оболочки - Integer, Boolean, Long и тд

              Добавлено
              ruli, бесспорно решение красивое, но для моей задачи это излишне грамоздко.
                а если писать под 1.4? ток через интерфайсы

                может я чегот-о не понимаю но ето тож самое по моему, ток в твоём варианте меньше писать, exception у тя могу появиться, если типы не проверять

                public <T> boolean SetValue(eMemberName eMU, T t)
                ===

                public class Class1 implements IGeneric{}

                public class Main
                {

                public void func(int i, IGeneric obj)
                {
                //...........
                }


                -----------------------------------------
                  ruli, если под 1.4 то да :)

                  Цитата ruli @
                  в твоём варианте меньше писать

                  да, я не пишу уже написанные оболочки для базовых классов - Integer/... .

                  Добавлено
                  подскажите на счёт такой задачи...

                  ExpandedWrap disabled
                        class Member<Type>
                        {
                            Type value; // <---
                     
                            Member(String strMA, eMemberName eMn, Type tIn)
                            {
                                strMIBAdress    =   strMA;
                                eMN             =   eMn;
                                value           =   tIn;
                                //value           =   (Type)0;
                            }
                        }

                  Член value при создании = null. А как ему присвоить первоначальное значение (= 0), т.е. просто создать объект через значение для конструктора по умолчанию типа value = new Type(0); ?
                    а если вот так?

                    class Member<Type>
                    {
                    Type value; // <--- здесь по моему нельзя инициализировать см п. 1

                    Member(String strMA, eMemberName eMn, Type tIn)
                    {
                    strMIBAdress = strMA;
                    eMN = eMn;
                    try{
                    value = (T)tIn.getClass().newInstance();
                    }catch(Exception e)
                    {}
                    //value = (Type)0;
                    }
                    }

                    п.1
                    посколько Т ето динамический тип, и он не известен до момента создания обьекта member

                    Добавлено
                    можно и так... но не знаю что получается :D

                    class Member<Type>
                    {
                    Type value; // <--- здесь по моем
                    static
                    {
                    new Member();
                    }

                    Member()
                    {
                    try{
                    value = (T)value.getClass().newInstance();
                    }catch(Exception e)
                    {}
                    }

                    Member(String strMA, eMemberName eMn, Type tIn)
                    {
                    strMIBAdress = strMA;
                    eMN = eMn;

                    //value = (Type)0;
                    }
                    }
                    Сообщение отредактировано: ruli -
                      эксепшн вылетает <_<
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0275 ]   [ 15 queries used ]   [ Generated: 23.04.24, 10:51 GMT ]