Как передать строку в отдельный java.class - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь передать строку из моего основного действия в отдельный класс, в котором не выполняется действие.

Я рассмотрел переменные с намерением и связками, но то, что я прочитал, они используют два действия

Я нашел видео о чем-то близком к тому, что я пытаюсь сделатьно наоборот и не может заставить его работать.(https://www.youtube.com/watch?v=CSifkubnE-E)

Теперь строка изменяется, поэтому я не могу использовать static, и у моего second.java нет контекста для передачи.

ниже - базовое представление того, что я хотел бынравится делать.

main.java

    import second

    public class Main extends Activity {
        String mystring = "variable"
        //mystring changes depending on the user
        mystring = "userchangedvariable"
    }

second.java

    public class dosomething(){
        String localvar;
        localvar = mystring
    }

Чтобы было как можно яснее, я хочу передать переменную из main.javaко второму .java, у которого нет контекста. Я не хочу добавлять класс second.java к своему main.java, я хочу держать их отдельно (некоторые вещи, которые я читаю, говорят, объединяют их). Как я могу сделатьэто?

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Вы можете сделать это следующими способами:

class Activity {
    onCreate() {
        String stringToPass = "TEST";
        Example example = new Example(stringToPass);
    }
}

class Example {
    private String stringToPass;

    public Example(String stringToPass) {
        this.stringToPass = stringToPass;
    }
}

or

class Activity {
    onCreate() {
        String stringToPass = "TEST";
        Example example = new Example();
        example.setStringToPass(stringToPass);
    }
}

class Example {
    private String stringToPass;

    public void setStringToPass(String stringToPass) {
        this.stringToPass = stringToPass;
    }

    public Example() {
    }
}

or

class Activity {
    onCreate() {
        String stringToPass = "TEST";
        Example.stringToPass = stringToPass;
    }
}

static class Example {
    public static String stringToPass;
}

or (not the advised way)


class Activity {
    onCreate() {
        String stringToPass = "TEST";
        Example example = new Example();
        example.stringToPass = stringToPass;
    }
}

class Example {
    public String stringToPass;

    public Example() {
    }
}

Если вы создаете новый объект и для его создания требуется строка -> отлично, сделайте это как требование в конструкторе.(первая версия)

Если вы создаете новый объект и строка не требуется для создания -> great make свойство (вторая версия)

Третья версия требуется реже (вы можете установитьстрока без необходимости создания объекта) и четвертой версии следует полностью избегать в Java.

0 голосов
/ 03 мая 2019

В основной файл .java добавьте следующее:

second example = new second("variable");

На него можно ссылаться в любом месте вашего основного метода.Например:

example.setString("variable);

Затем, внутри вашего второго .java файла, вам нужно добавить следующее:

public class second

{

   private String variable;

   public void setString(String pass)

   {

   variable = pass

   }

}

Таким образом, все, что вы передадите в переменную примера внутриваш основной файл .java будет передан методу setString.

0 голосов
/ 02 мая 2019

Я не получил следующий оператор.

Теперь строка изменяется, поэтому я не могу использовать статические

Вы можете обновить значения static.Вы не можете обновить final значений.Также вам нужно как-то создать соединение.Вы можете создать другой класс и поделиться статическими переменными

class ThirdClass {
        public static String sharedString;
    }

    class Main {
        ThirdClass.sharedString = "somevalue";
    }

    class Second {
        localVar = ThirdClass.sharedString;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...