Это не метод, это статический блок инициализации, и ваш синтаксис неправильный
public abstract class A()
{
public static String SomeString = null;
static
{
SomeString = "aaa";
}
}
Самый простой способ инициализации полей (статических или экземпляров) в Java во время их объявления - это простопредоставляя значение постоянной времени компиляции совместимого типа данных.Например:
public class InitializationWithConstants{
public static int staticIntField = 100;
private boolean instanceBoolField = true;
}
Этот тип инициализации имеет свои ограничения из-за своей простоты и не может поддерживать инициализацию даже на основе некоторой умеренно сложной логики - например, инициализация только выбранных элементов сложного массива с использованием некоторой логики вцикл for.
Здесь возникает необходимость в статических блоках инициализации и блоках инициализатора для инициализации статических полей и полей экземпляров, соответственно.
Это обычный блок кода, заключенный в пару фигурных скобок и предшествующий емупо «статическому» ключевому слову.Эти блоки могут быть где угодно в определении класса, где у нас может быть поле или метод.Среда выполнения Java гарантирует, что все статические блоки инициализации вызываются в том порядке, в котором они появляются в исходном коде, и это происходит при загрузке класса в память.
public class InitializationWithStaticInitBlock{
public static int staticIntField;
private boolean instanceBoolField = true;
static{
//compute the value of an int variable 'x'
staticIntField = x;
}
}
Поскольку блоки статической инициализации фактически являютсякодовые блоки, чтобы они позволили нам инициализировать даже те статические поля, которые требуют некоторой логической обработки, чтобы получить их начальные значения.