Имя объекта метода Java из аргумента

1

Я хотел бы создать метод, который, помимо прочего, создаст объект, названный как аргумент метода. (Я прошу прощения, если он разрешен где-то в другом месте, не нашел его). Что-то вроде следующего:

public return_type method (String ARGUMENT1)
{
  ...
  ClassOfSomeKind objectOfSomeKind someprefix_ARGUMENT1 = new ClassOfSomeKind();
}
  • 1
    Кроме того, полезно, чтобы даже ваш пример кода следовал соглашениям об именах, например, string objectName в качестве параметра и SomeClass вместо objectOfSomeKind .
  • 0
    Я думаю, вам нужно объяснить, почему вы этого хотите.
Теги:
object
arguments

2 ответа

3

Это назначение переменной - не объект. Объекты не имеют имен, как таковых. (У вас может быть поле под name конечно, но это не общее.)

Имена переменных обычно применимы только во время компиляции, поэтому на самом деле не имеет смысла делать это динамически.

Похоже, вы, вероятно, хотите Map<String, YourClassType> чтобы вы могли связать каждый объект с именем и затем извлечь его позже. Итак, что-то вроде:

class Foo {
    private final Map<String, Bar> bars = new HashMap<>();

    public Bar createBar(String name) {
        Bar bar = new Bar();
        bars.put(name, bar);
        return bar;
    }

    public void processBar(String name) {
        Bar bar = bars.get(name);
        if (bar == null) {
            // No Bar for that name...
            // Maybe throw an exception?
        }
        // Do something with bar
    }
}
  • 0
    Спасибо за ответ, но, как я начинающий, не могли бы вы объяснить немного? Что мне нужно, так это создать функцию «ярлык», которую я использую в разных местах кода, но каждый раз, когда я ее использую, она создает один и тот же тип объекта, но с уникальным содержимым, и мне нужно иметь возможность позже получить доступ к этим различным объектам. , Не могли бы вы расширить мой код с помощью Map, чтобы я понял его лучше?
  • 0
    @ user3338991: Это трудно сделать, когда мы так мало знаем о том, чего ты пытаешься достичь. Я добавил пример, но не совсем понятно, нужно ли это вам ...
2

Вы можете использовать карту, где ключ является вашим именем переменной, а значением является объект ObjectOfSomeKind:

public class YourClass {
  ...
  private Map<String, ObjectOfSomeKind> yourHashMap= new HashMap<String, ObjectOfSomeKind>();

  public method (string ARGUMENT1)
  {
    yourHashMap.put("someprefix_"+ARGUMENT1, new ObjectOfSomeKind ("someprefix_"+ARGUMENT1));

  }
  ...

  public retrieveMethod (string ARGUMENT1)
  {
    ObjectOfSomeKind objectOfSomeKindRetrieved = yourHashMap.get("someprefix_"+ARGUMENT1);
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню