Подтвердить что ты не робот

Какую цель выполняет Class.forName(), если вы не используете возвращаемое значение?

Я видел эту строку в примере приложения для использования коммерческого драйвера JDBC:

Class.forName("name.of.a.jcdb.driver")

Возвращаемое значение не используется.

Какую цель выполняет эта линия?

4b9b3361

Ответ 1

Он выполняет статическую загрузку этого класса. Так что все в блоке static { } будет работать.

Ответ 2

Может быть, некоторый фрагмент кода поможет. Это от драйвера моста Sun JDBC-ODBC,

//--------------------------------------------------------------------
// Static method to be executed when the class is loaded.
//--------------------------------------------------------------------


static
{       
    JdbcOdbcTracer tracer1 = new JdbcOdbcTracer();
    if (tracer1.isTracing ()) {
        tracer1.trace ("JdbcOdbcDriver class loaded");
    }

    JdbcOdbcDriver driver = new JdbcOdbcDriver ();

    // Attempt to register the driver

    try {
        DriverManager.registerDriver (driver);
    }
    catch (SQLException ex) {
        if (tracer1.isTracing ()) {
            tracer1.trace ("Unable to register driver");
        }  
    }
}

вызов DriverManager.registerDriver() в статическом блоке выполняется всякий раз, когда драйвер загружается через Class.forName().

Это был единственный способ зарегистрировать драйвер. JDBC 4.0 представила новый механизм регистрации услуг, поэтому вам больше не нужно делать это с новыми совместимыми с JDBC версиями драйверов.

Ответ 3

В вашем конкретном примере класс драйвера JDBC содержит статический intializer, который регистрирует драйвер, DriverManager.

Ответ 4

Это используется, в частности, для драйверов JDBC. Класс драйвера JDBC имеет статический блок инициализатора, который регистрирует класс с помощью DriverManager JDBC, так что DriverManager знает о драйвере, когда вы позже открываете соединение с базой данных.

В более новой версии JDBC (я думаю, JDBC 3.0) это больше не нужно, другой драйвер DriverManager используется для поиска драйверов JDBC.

edit - На этой странице подробно объясняется, как загружается драйвер JDBC и как драйвер регистрируется с помощью DriverManager (старый способ).

Ответ 5

В случае драйверов JDBC статический инициализатор запрошенного класса будет регистрировать драйвер с JDBC DriverManager, чтобы получить соединение для URL-адреса, зависящего от драйвера.

Ответ 6

для запуска класса нагрузки в текущем загрузчике классов