Конструкторы могут появиться где угодно в коде для класса. Однако условно большинство людей помещает их перед любыми другими функциями, которые не являются конструкторами.
Что касается имен переменной, все 6 являются на самом деле именами переменной, но объемом является differnet. Те указанные как параметры конструктору (startCadence, startSpeed, startGear) только доступны в конструкторе. Другие 3 (механизм, тактовый сигнал, скорость) являются, вероятно, переменными всего класса, доступными всем методам. Однако определение не показывают в Вашем фрагменте кода. Полный класс посмотрел бы mroe как:
class Bicycle
{
// class-level variables
private int gear;
private int cadence;
private int speed;
// constructor
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
// another method (not a constructor)
public void ShiftUp() {
gear = gear + 1; // notice the 'gear' variable is available here too.
}
}
Hope, которая помогает!
Я только что создал библиотеку для этого минуту назад. Он размещен здесь: http://code.google.com/p/xeger/ . Перед использованием внимательно прочтите инструкцию. (Особенно та, которая касается загрузки другой необходимой библиотеки.); -)
Вот как вы ее используете:
String regex = "[ab]{4,6}c";
Xeger generator = new Xeger(regex);
String result = generator.generate();
assert result.matches(regex);
Вот несколько реализаций такого зверя, но ни одна из них на Java (и все, кроме Microsoft с закрытым исходным кодом, очень ограничены в своей функции регулярного выражения поддержка).
Мне неизвестна такая библиотека. Если вы заинтересованы в написании одного из них самостоятельно, то, вероятно, вам нужно будет предпринять следующие шаги:
Напишите синтаксический анализатор для регулярных выражений (вы можете начать с ограниченного класса регулярных выражений).
Используйте результат для создания NFA .
(Необязательно) Преобразуйте NFA в DFA .
Произвольно переместите полученный автомат из начального состояния в любое принимающее состояние, при сохранении символов, выводимых каждым переходом.
Результат - слово, которое принимается исходным регулярным выражением. Для получения дополнительной информации см., Например, Преобразование регулярного выражения в детерминированный конечный автомат .
Вот реализация подобного модуля в Python: http://www.mail-archive.com/python-list@python.org/msg125198.html Она должна быть переносима на Java.