Мне нужно использовать несколько строк, созданных в методе внутри класса в другом классе - PullRequest
0 голосов
/ 13 октября 2019

Итак, в основном у меня есть метод в классе, скажем, класс A, который, когда вы задаете ему String, использует Split для создания нескольких строк. Этот метод будет выглядеть примерно так:

Public void xxxx(String entry){

     String[] Parts=entry.split(" ");
     String part1=Parts[0]; 
     String part2=Parts[1];

Итак, теперь я хочу использовать эти две строки внутри if (....) в другом классе, как мне это сделать? Я нуждаюсь в каждой части (их больше 2) в разных, если, а иногда и все вместе, как их использовать? спасибо

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Есть несколько опций:

1) Возвращает массив строк. (Не очень полезный метод, если это все, что вы делаете.)

public String[] xxxx(String entry) {
  String[] Parts=entry.split(" ");
  return parts;
}

2) Возвращает экземпляр объекта, который обеспечивает доступ к различным частям String.

public class PartHolder{
  private ArrayList<String> parts = new ArrayList<>();

    public int getPartsCount() {
        return parts.size();
    }

    public String getPart(int x) {
        return parts.get(x);
    }

    public void addPart(String part) {
        parts.add(part);
    }

    public void addParts(String[] partsToAdd) {
        parts.addAll(Arrays.asList(partsToAdd));
    }
}
...
public String[] xxxx(String entry) {
  String[] Parts=entry.split(" ");
  return parts;
}

3) Сделайте части String доступными через глобально доступный (статический) метод или атрибут. Этот подход имеет ограниченную полезность, поскольку он имеет дополнительную сложность при работе с многопоточными приложениями.

public static String[] GLOBAL_PARTS;
public void xxxx(String entry) {
  GLOBAL_PARTS = entry.split(" ");
}
0 голосов
/ 13 октября 2019

Из вашего описания не ясно, как эти классы и методы работают вместе. Но поскольку все, что делает ваш xxxx метод - это разделение строк, было бы лучше сделать его статическим служебным классом.

Тогда вы можете сделать что-то вроде этого.

class MyClass {
     // Note that this method doesn't really add any benefit to
     // simply using String.split().
     public static String[] xxxx(String entry){
        String[] parts=entry.split(" ");
        return parts;
     }
}

class OtherClass {
    public void someMethod(String str) {
        String[] p = MyClass.xxxx(str);
        System.out.println(p[0]);
        System.out.println(p[1]);
    }
}

Существует многодругие возможности. Все зависит от того, как вы хотите, чтобы методы и классы взаимодействовали друг с другом.

...