простой вопрос: как извлечь некоторую информацию из объекта в Java

#java

#java

Вопрос:

Я работаю на Java, и у меня есть метод, который возвращает пару, т.е. (Строка, целое число). На другом этапе программы я хочу извлечь только строку. Как мне это сделать?

Спасибо.

Комментарии:

1. returns a pair как? это кортеж или KeyValuePair?

2. Строка someNewString = SomeObject.someMethod().SomeStringValue

3. Может помочь немного кода, чтобы показать, что у вас есть / чего вы хотите…

4. Пара? Можете ли вы указать свой точный возвращаемый тип?

5. Спасибо всем. Я понял. Я думаю, это был мозговой пердеж. Все еще очень новичок во всем этом, поэтому я усваиваю вещи на ходу. Идея «SomeObject.getwhatIwant()» просто вылетела у меня из головы.

Ответ №1:

добавьте другой метод, возвращающий String только и используйте его в упомянутом другом месте вашей программы

Ответ №2:

Если вы создаете объект, вы можете легко получить значение из объекта типа getString() (частный случай) : newString = p1.getString ;

Ответ №3:

Как вы возвращаете пару? Это может быть с помощью объекта или массива.

Если это объект, который вы возвращаете, он, вероятно, выглядит следующим образом…

 public ResultObject MyMethod() {
    String s = "foo";
    int i = 42;
    return new ResultObject(s, i);
}

public class ResultObject() {
    public String s;
    public int i;
    public ResultObject(String s, int i) {
        this.s = s;
        this.i = i;
    }
}
  

И вы можете получить доступ к результату следующим образом

 ResultObject r = MyMethod();
System.out.println(r.s); // "foo"
System.out.println(r.i); // "42"
  

Если вы возвращаете массив, он, вероятно, выглядит следующим образом…

 public Object[] MyMethod() {
    String s = "foo";
    int i = 42;
    return new Object[] { s, i };
}
  

И вы можете получить доступ к результату следующим образом

 Object[] r = MyMethod();
System.out.println(r[0]); // "foo"
System.out.println(r[1]); // "42"
  

Возврат результирующего объекта предпочтительнее, потому что массив заставляет вас полагаться на порядок результатов, менее описателен при доступе к результирующим объектам (r[0] по сравнению с r.somename), подвержен исключениям, выходящим за рамки, и не типизирован (вам придется привести ваши результирующие объекты к типу, которым они должны быть).

Ответ №4:

 Object[] method(int param1, int param2){
    //do something
    return new Object[]{"string", 1};
}
....
String value = (String)obj.method(param1, param2)[0];
  

Комментарии:

1. Я думаю, вам не хватает приведения к String

Ответ №5:

Для получения большего, чем возврат, используя карту взамен.

Para mais de um retorno utilize um Map como retorno.

 public Map<String, Integer> method(){
    Map<String,Integer> map = new HashMap<String, Integer>();

    String s = "foo";
    Integer i = 99;

    map.put(s,i);

    return map;
}