Вызов метода из одного класса в другой - PullRequest
0 голосов
/ 28 февраля 2019

Я написал этот метод в одном классе для проверки, существует ли таблица в моей базе данных:

public boolean DoesTableExist(String tableName) {
    SQLiteDatabase mDatabase = openOrCreateDatabase("privdb",MODE_PRIVATE,null);

    Cursor cursor = mDatabase.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
    if(cursor!=null) {
        if(cursor.getCount()>0) {
            cursor.close();
            return true;

        }
        cursor.close();
    }

    return false;
}

Теперь я хотел бы вызвать этот метод в других активах или классах, без написания того же кода.каждый раз в каждом файле.Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

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

Экземпляр:

ClassName classInstance = new ClassName();
classInstance.getMethod(parametar);

Статический:

ClassName.methodName(parametar);

Подробнее об этом: Как вызвать метод в другом классе в Java?

0 голосов
/ 28 февраля 2019

Это было бы неплохо положить в пакет утилит.Создайте новый пакет Java с именем «utils», добавьте новый класс, например «DatabaseUtils.java», и сделайте так, чтобы он выглядел примерно так:

    public class DatabaseUtils {

    public boolean DoesTableExist(String tableName) {
                SQLiteDatabase mDatabase = openOrCreateDatabase("privdb",MODE_PRIVATE,null);

                Cursor cursor = mDatabase.rawQuery("select DISTINCT tbl_name from sqlite_master                 where tbl_name = '"+tableName+"'", null);
                if(cursor!=null) {
                    if(cursor.getCount()>0) {
                        cursor.close();
                        return true;
                    }
                    cursor.close();
                }
                return false;
            }

    }

Теперь вы можете ссылаться на него из других мест, например:

    public class main {

            public static void main(String [] args)
                    boolean isTableExisting = DatabaseUtils.doesTableExist("yourTableName")
                    System.out.println("Table existing? " + isTableExisting);
            }
    }

Возможно, вам также понадобится передать имя базы данных ("privdb") или ссылку на расположение метода "openOrCreateDatabase (...)".

Когда ваша база данных существует, она напечатает "Table existing? true"

0 голосов
/ 28 февраля 2019

Обычно вы вызываете методы в другом классе, создавая экземпляр класса, а затем вызывая метод.Например, если класс, в котором находился метод, был назван DatabaseUtils, вы бы сделали следующее:

DatabaseUtils dbUtils = new DatabaseUtils();
boolean exists = dbUtils.doesTableExist("tablename"); 
                      // ^ note that the normal Java convention is to make
                      //   method names start with a lower case letter

Однако это похоже на «служебный» метод (объект предположительно нене хранить никакого состояния, и, следовательно, нет никакой реальной необходимости его создавать), и общий способ их обработки состоит в том, чтобы сделать метод статичным, например:

public static boolean doesTableExist(String tableName) {

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

boolean exists = DatabaseUtils.doesTableExist("tablename");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...