Могу ли я использовать переменную типа String? - PullRequest
1 голос
/ 01 августа 2011

Есть ли способ сделать это в Java?

Если переменная String, выполнить одну операцию, в противном случае выполнить другую операцию.

Например, заданная переменная a

if a is a string
    close program
else
    continue program

Я ищу код, который проверяет, является ли переменная String или нет.

Ответы [ 6 ]

4 голосов
/ 01 августа 2011
if (x instanceof String) {
   // do one thing
} else { 
   // do something else
}

Или вот так:

if ((x != null) && String.class.equals(x.getClass())) {
   // do one thing
} else { 
   // do something else
}
1 голос
/ 01 августа 2011

Каноническим способом является использование instanceof.Но можно использовать и перегрузку метода:

public class IsString
{
    public IsString ()
    {
      System.out.println ("String: " + isString ("7"));
      Object o = "object";
      System.out.println ("Object: " + isString (o));
      System.out.println ("o instanceof String ?= " + (o instanceof String));
    }

    public boolean isString (String p)
    {
        return true;
    }
    public boolean isString (Object o)
    {
        return false;
    }

    public static void main (String args[])
    {
        new IsString ();
    }
}

Но есть разница: если ссылка объявлена ​​как Object, строка не обнаруживается, а instanceof обнаружит ее.

1 голос
/ 01 августа 2011
if(x instanceof String) 
{
    //Close
}
else
{
   //Continue
}
1 голос
/ 01 августа 2011
if (myvariable instanceof String) {
     // Yes! It's a string
}
0 голосов
/ 06 августа 2011
Оператор

instanceof - это то, что вы используете в Java, когда хотите проверить, относится ли данный объект к определенному типу.

if(x instanceof String) {
  String s = (String) x;
  // ...
} else {
  // ...
}

Использование таких проверок типов не рекомендуется в ООП.Вы должны скорее попытаться решить вашу проблему, используя полиморфизм подтипа (или наследование, если хотите).(Если вы опишите вашу конкретную проблему, мы можем помочь вам в этом.)


Интересный фактоид: Scala, еще один статически типизированный язык в JVM, имеет следующую конструкцию, которая позволяет вам сопоставлять тип и приведениек этому типу в одном предложении:

x match {
  case s: String => ...
  case _ => ...
}
0 голосов
/ 01 августа 2011

Из JavaDoc,

Оператор instanceof сравнивает объект с указанным типом.Вы можете использовать его, чтобы проверить, является ли объект экземпляром класса, экземпляром подкласса или экземпляром класса, который реализует определенный интерфейс.

Используйте instanceOf следующим образом:

if (variable instanceof String) {
     //  It's a string
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...