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

Так как Вы не указываете язык, я просто выберу тот наугад. Вот powershell сценарий, чтобы сделать это:

$rootDir = 'C:\Temp\TestRandomFiles\'
$baseFile = $rootDir + "base.txt"
$desiredFileSize = 2*1KB
$fileCount = 50000
"start" | Out-File -Filepath $baseFile
While ($(Get-ChildItem -path $baseFile).Length -lt $desiredFileSize)
{
    $(Get-ChildItem -path $baseFile).Length | Out-File $baseFile -APPEND
}
for($i=1;$i -lt $fileCount;$i++)
{
    Copy-Item $baseFile "File$i.txt"
}

необходимо будет заменить переменные к параметрам, которые Вы хотите, конечно.

20
задан Daniel Rikowski 21 August 2009 в 08:53
поделиться

6 ответов

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

25
ответ дан 29 November 2019 в 23:20
поделиться

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

//--------------------------------------------------------------------
// 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 4.0 драйверами.

12
ответ дан 29 November 2019 в 23:20
поделиться

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

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

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

4
ответ дан 29 November 2019 в 23:20
поделиться

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

5
ответ дан 29 November 2019 в 23:20
поделиться

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

2
ответ дан 29 November 2019 в 23:20
поделиться

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

1
ответ дан 29 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: