2010-11-09 3 views
2

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

+1

Сколько Java вы узнали? Похоже, вам будет полезно прочитать некоторые базовые учебники по java. – jjnguy

+0

http://download.oracle.com/javase/tutorial/ – jjnguy

ответ

5

Создать объект из этого класса и вызвать метод на объекте?

import com.acme.myclass; 

... 

MyClass obj = new MyClass(); 
obj.nonStaticMethod(); 

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

+0

Конечно, если вам нужно всего лишь вызвать этот метод и забыть его, 'new MyClass(). NonStaticMethod();' как подсказывает jjnguy. – BoltClock

+2

избил меня на секунду. – jjnguy

5

Чтобы вызвать нестатический метод, вы должны вызвать метод в экземпляре объекта.

Учитывая следующий класс:

public class MyClass { 
    public void nonStaticMethod(); 
} 

Вы бы вызвать метод следующим образом:

new MyClass().nonStaticMethod(); 

Или, если вам нужно вызвать этот метод более чем один раз, вы можете сохранить его в объект.

MyClass instance = new MyClass(); 
instance.nonStaticMethod(); 
... 
instance.nonStaticMethod(); 
0

Статические методы не нужно создавать, а методы экземпляра - внутри класса экземпляра.

Чтобы получить метод экземпляра, вам сначала понадобится экземпляр его класса, используя ключевое слово new. Затем вы можете получить доступ к методам экземпляра этого класса.

1

Этот метод относится к классу.

Итак, что вам нужно сделать, это создать экземпляр этого класса (скорее всего, с новым оператором), а затем использовать его:

package a; 

class A { 
    public void theMethod(){ 
    } 
} 

..... 
package b; 
import a.A; 
class Main { 
    public static void main(String [] args) { 
     A a = new A(); 
     a.theMethod(); 
    } 
} 
0

Нестатические (например) не может быть вызвана из статического контекст. Другой способ возможен.

1

Вы можете создать объект класса всякий раз, когда вам нужно вызвать нестатический метод, с чем-то вроде:

new BadlyWrittenClass().BadlyWrittenMethod(); 

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

Лучше всего создать экземпляр объекта, например, в вашем собственном конструкторе класса, и просто использовать его в любое время, когда вам нужно вызвать метод. Если он не требует нового инициализированного объекта каждый раз, это может быть более эффективным.

Но вы также можете иметь в виду, что может быть причина , почему метод не является статичным (несмотря на то, что я не так тонкий jab в названии класса и метода выше). Убедитесь, что он не требует определенного состояния, которое вы не настраиваете при создании нового экземпляра. Другими словами, не слепо старайтесь делать это без понимания.

Смежные вопросы