Объект создан и назначен без нового или объявления

Я пытаюсь понять пример кода в Webots (программа моделирования роботов).

Я столкнулся с этим кодом:

Servo rightShoulderPitch = getServo("RShoulderPitch");
rightShoulderPitch.setPosition(1.5);

Я не понимаю, что такое мясо по первой строчке. Похоже, что rightShoulderPitch является объектом класса Servo, но он не создается как обычно, и как getServo (я думаю, что это метод) приходит сюда.

Заголовок этого класса, если это помогает:

public class FieldPlayer extends Robot {

Также есть описание компании в справочном руководстве, но я не мог понять, что они имеют в виду. Здесь можно найти поиск по Гитеру.

--- RShoulderPitch: имя плеча робота

Я буду очень признателен за помощь.

Спасибо

2 ответа

Решение

В дополнение к превосходному ответу Джона я постараюсь объяснить вам более общие термины.

Когда вы хотите бутерброд, у вас есть два решения:

  • приготовь бутерброд сам. Это будет эквивалент кода Sandwich s = new Sandwich()
  • идите в закусочную и попросите у них бутерброд. Это будет эквивалент кода Sandwich s = snackBar.getSandwich("Ham & Cheese"),

В последнем случае это объект закусочной getSandwich() метод, который будет использовать название сэндвича, которое вы хотите ("Хэм и сыр"), чтобы приготовить сэндвич и вернуть его для вас. Таким образом, этот метод, вероятно, внутренне вызовет новый Sandwich(), Но он также может делегировать другому объекту и вызывать, например: cook.prepareSandwich("Ham & Cheese"), И в этом случае, это объект cook, который будет вызывать new Sandwich(), Или объект snackBar также может просто получить бутерброд, который был подготовлен заранее и сохранен в некотором кеше: fridge.getSandwich("Ham & Cheese"),

Эта строка:

Servo rightShoulderPitch = getServo("RShoulderPitch");

... вызывает getServo метод, передавая строковое значение "RShoulderPitch". Возвращаемое значение используется в качестве начального значения rightShoulderPitch переменная, которая имеет тип Servo, (Обратите внимание, что rightShoulderPitch это не объект - это переменная У него есть значение, которое будет либо нулевым, либо ссылкой на объект.)

Мы не можем сказать, что тип возврата getServo есть, но это должно быть что-то, что неявно конвертируется в Servo - так что либо Servo сам или какой-то подкласс.

getServo мог:

  • Создайте новый объект и верните ссылку на него
  • Возврат ссылки на существующий объект (например, из кеша)
  • Вернуть ноль
  • Бросить исключение

Если ничего из этого не помогло, уточните , что именно вы не понимаете. Похоже, вы новичок в Java - в этом случае, изучение "просто Java" без API Webots, вероятно, будет хорошим подходом; Учите Веботов только тогда, когда вы уверены в самом языке.

Другие вопросы по тегам