Wymagane napisanie toString.

0

Witam. Dlaczego wymagane jest tutaj napisanie "toString"? Zazwyczaj jeśli funkcja potrzebuje argumentu typu string to domyslnie wywoluje toString na obiekcie. Tutaj bez recznego napisania ".toString" po getText() nie chce działać. Z czego to wynika jeśli można wiedzieć? :)

public void onButtonClick(View v){
        EditText e1 = (EditText) findViewById(R.id.editText);
        EditText e2 = (EditText) findViewById(R.id.editText2);
        TextView t1 = (TextView) findViewById(R.id.textView);
        int num1 = Integer.parseInt(e1.getText().toString());
        int num2 = Integer.parseInt(e2.getText().toString());
        int sum = 0;
        try {
            sum = num1 + num2;
        }catch(Exception x){
            sum = 666;
        }finally {
        t1.setText(Integer.toString(sum));
        }
    }
0

Zazwyczaj jeśli funkcja potrzebuje argumentu typu string to domyslnie wywoluje toString na obiekcie

Nieprawda, tak robią tylko metody print() i println() klasy OutputStream.

0

Dzięki za odpowiedź.

1

Małe uzupełnienie, jeżeli wśród zmiennych ob1,..,obn chociaż jedna jest typu String, to wyrażenie

String s = ob1 + ... + obn

jest poprawne i równoważne wyrażeniu

String s = ob1.toString() + ... + obn.toString()

Edit Wyrażenie

String s = ob1 + ... + obn

jest zawsze poprawne, ale, jak zauważył @garai, może nie być równoważne z wyrażeniem

String s = ob1.toString() + ... + obn.toString()

jeżeli wśród zmiennych są zmienne numeryczne.

Integer ob1 = new Integer(3);
Integer ob2 = new Integer(5);
String s = "" + ob1 + ob2; //=> "35", oba plusy to konkatenacje
String s = "".toString() + ob1.toString() + ob2.toString(); //=> "35", oba plusy to konkatenacje
String s = ob1 + ob2 + ""; //=> "8", pierwszy plus to dodawanie, drugi konkatenacja
String s = ob1.toString() + ob2.toString() + "".toString(); //=> "35", oba plusy to konkatenacje
0

Chyba nie do końca. Kolejność ma znaczenie.

        int a = 3, b = 5;
        String s = "" + a + b;
        System.out.println(s);
        s = a + b + "";
        System.out.println(s);

1 użytkowników online, w tym zalogowanych: 0, gości: 1