Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта / 10 сообщений из 10, страница 1 из 1
17.02.2005, 14:27
    #32921005
Evgene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
У меня есть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DatabaseMetaData dm = connection.getMetaData();
 Class  clazz =  Class .forName("java.sql.DatabaseMetaData");

 Class [] parameterTypes =  new   Class [ 4 ];
Object[] parameterValues =  new  Object[ 4 ];
...
parameterTypes[ 0 ] =  Class .forName("java.lang.String");
...
Method mezzod = clazz.getMethod("getTables", parameterTypes);
ResultSet rs = (ResultSet) mezzod.invoke(dm, parameterValues);

У метода getTables (класс DatabaseMetaData) есть четвертый параметр типа String[].
Спрашивается, как задать parameterTypes[3] в том же стиле, что и parameterTypes[0] (что то вроде parameterTypes[3] = Class.forName("java.lang.String")[];)?
...
Рейтинг: 0 / 0
17.02.2005, 21:36
    #32922024
ejik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
tak -

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 import  java.lang.reflect.Array;

 public   class  Test {
     public   static   final   int  MAGIC_NUMBER =  17 ; 
     public   static   void  main(String[] args) {
        String[] strings =  null ;
         try  {
            strings = (String[]) Array.newInstance(
                 Class .forName("java.lang.String"), MAGIC_NUMBER);
        }  catch  (ClassNotFoundException e) {
            e.printStackTrace();    
        }
         for  ( int  i= 0 ; i<MAGIC_NUMBER; ++i)
            strings[i] = "string" + i;
         for  ( int  i= 0 ; i<MAGIC_NUMBER; ++i)
            System.out.println(strings[i]);    
    }
}
...
Рейтинг: 0 / 0
18.02.2005, 15:16
    #32923513
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
Class.forName("java.lang.String")


Это что? Анекдот?
...
Рейтинг: 0 / 0
22.02.2005, 11:49
    #32927986
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
NotGonnaGetUs
Class.forName("java.lang.String")


Это что? Анекдот?

Почему "анекдот"? Вполне рабочий код.
...
Рейтинг: 0 / 0
22.02.2005, 11:57
    #32928022
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
А мне нравится! Обобщающе как-то! И проверка класса выносится в рантайм. В этом что-то есть.
...
Рейтинг: 0 / 0
22.02.2005, 12:03
    #32928051
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
Зашедший NotGonnaGetUs
Class.forName("java.lang.String")


Это что? Анекдот?

Почему "анекдот"? Вполне рабочий код.

JVM любой версии (если это не куцик для какого-нибудь девайса) найдёт класс String, т.к. он есть в стандарте начиная с самых первых версий.
String.class - делает тоже самое, но быстрее, очевиднее и не в рантайм.
Аналогично, String[].class.

Другое дело, что автор мог просить решение для произвольного класса (не доступного при компиляции), приведя в качестве примера java.lang.String.
Поэтому я и задал вопрос, к чему всё это?
...
Рейтинг: 0 / 0
22.02.2005, 12:07
    #32928064
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
Обычно JDBC драйвера так подгружают.
...
Рейтинг: 0 / 0
22.02.2005, 12:08
    #32928066
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
maytonА мне нравится! Обобщающе как-то! И проверка класса выносится в рантайм. В этом что-то есть.
"Это" часто бывает нужно для реализации подгружаемых пользовательских классов. Чтобы дать возможность поддержке на объектах внедрения писать настроечные методы. Простенький пример:
номер порождаемого документа формируется по некоему правилу (допустим, в одном городе дата создания+порядковый номер+наименование филиала, а в другом - фамилия начальника отдела+количество дней от рождения его любимой собачки). Тогда пишется абстрактный класс:
Код: plaintext
1.
2.
3.
   public   abstract   class  DocNumberGetter{
      public   abstract  String formatDocNumber(Connect connect, Date docDate, ...);
  }
Служба поддержки реализует собственные классы, например:
Код: plaintext
1.
2.
3.
4.
5.
   public   class  TmutarakanDocNumberGetter  extends  DocNumberGetter{
     public  String formatDocNumber(Connect connect, Date docDate, ...){
       return  docDate.toString();
    }
  }
и указывает его наименование в файле конфигурации, естественно, включив созданный для данного филиала пакет пользовательских классов в класспат. А потом с помощью Class.forName(...) создается экземпляр указанного пользовательского класса и вызываются методы общего класса-предка.
...
Рейтинг: 0 / 0
22.02.2005, 12:10
    #32928073
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
NotGonnaGetUs Зашедший NotGonnaGetUs
Class.forName("java.lang.String")


Это что? Анекдот?

Почему "анекдот"? Вполне рабочий код.

JVM любой версии (если это не куцик для какого-нибудь девайса) найдёт класс String, т.к. он есть в стандарте начиная с самых первых версий.
String.class - делает тоже самое, но быстрее, очевиднее и не в рантайм.
Аналогично, String[].class.

Другое дело, что автор мог просить решение для произвольного класса (не доступного при компиляции), приведя в качестве примера java.lang.String.
Поэтому я и задал вопрос, к чему всё это?

Тогда очень извиняюсь, я воспринял вопрос именно как обобщенный, для произвольного класса.
...
Рейтинг: 0 / 0
22.02.2005, 12:13
    #32928087
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание объекта
Зашедший NotGonnaGetUsПоэтому я и задал вопрос, к чему всё это?

Тогда очень извиняюсь, я воспринял вопрос именно как обобщенный, для произвольного класса.

Только Evgene знает, что ему было нужно на самом деле :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]