powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта
10 сообщений из 10, страница 1 из 1
Создание объекта
    #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
Создание объекта
    #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
Создание объекта
    #32923513
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Class.forName("java.lang.String")


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


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

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


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

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

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

Другое дело, что автор мог просить решение для произвольного класса (не доступного при компиляции), приведя в качестве примера java.lang.String.
Поэтому я и задал вопрос, к чему всё это?
...
Рейтинг: 0 / 0
Создание объекта
    #32928064
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно JDBC драйвера так подгружают.
...
Рейтинг: 0 / 0
Создание объекта
    #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
Создание объекта
    #32928073
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs Зашедший NotGonnaGetUs
Class.forName("java.lang.String")


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

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

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

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

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

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

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


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