Java 访问其他类中的对象
我在一本java书中读到,为了访问一个类中的方法ect,需要使用构造函数创建一个对象。下面是一个例子Java 访问其他类中的对象,java,android,class,object,constructor,Java,Android,Class,Object,Constructor,我在一本java书中读到,为了访问一个类中的方法ect,需要使用构造函数创建一个对象。下面是一个例子 Class1 Class2 MyObject = new Class2(); MyObject.methodCall(); Class2 methodCall(){ } 现在,我正在制作一个android应用程序,我使用了上面的方法,我遇到了错误,然后我阅读了一篇文章,其中提供了一种从其他类访问方法ect的替代方法 Class1 Class2 myObject; myObject.myMe
Class1
Class2 MyObject = new Class2();
MyObject.methodCall();
Class2
methodCall(){
}
现在,我正在制作一个android应用程序,我使用了上面的方法,我遇到了错误,然后我阅读了一篇文章,其中提供了一种从其他类访问方法ect的替代方法
Class1
Class2 myObject;
myObject.myMethod();
Class2
myMethod(){
}
如果不使用
new *InsertClassName*();
编辑
日志:
05-25 17:19:02.195: E/AndroidRuntime(718): FATAL EXCEPTION: main
05-25 17:19:02.195: E/AndroidRuntime(718): java.lang.StackOverflowError
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonClickListener.java:41)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.VerificationMethods.<init>(VerificationMethods.java:5)
05-25 17:19:02.195: E/AndroidRuntime(718): at com.example.myfirstcalculator.ButtonClickListener.<init>(ButtonCli
05-25 17:19:02.265: W/ActivityManager(61): Force finishing activity com.example.myfirstcalculator/.MainActivity
VerificationMethods.java
public class VerificationMethods {
ButtonClickListener BCL = new ButtonClickListener(null, null, null);
//error - ...and here
public boolean authenticateForFunctionsandNumbers(){
if(ButtonClickListener.valueofOutput.isEmpty()){
return true;
}else{
return false;
}
...
我猜在第二个示例中,您使用的是静态方法,它不需要使用new操作符创建新的对象实例 这将在任何地方可用,在这里您不使用新的创建对象:
public class MyClass1 {
public static void myMethod1(){
//something something
}
}
这需要创建新对象:
public class MyClass2 {
public void myMethod2(){
//something something again
}
}
现在您可以使用:
MyClass1 myObject1;
myObject1.myMethod1();
但是:
我猜在第二个示例中,您使用的是静态方法,它不需要使用new操作符创建新的对象实例 这将在任何地方可用,在这里您不使用新的创建对象:
public class MyClass1 {
public static void myMethod1(){
//something something
}
}
这需要创建新对象:
public class MyClass2 {
public void myMethod2(){
//something something again
}
}
现在您可以使用:
MyClass1 myObject1;
myObject1.myMethod1();
但是:
我猜在第二个示例中,您使用的是静态方法,它不需要使用new操作符创建新的对象实例 这将在任何地方可用,在这里您不使用新的创建对象:
public class MyClass1 {
public static void myMethod1(){
//something something
}
}
这需要创建新对象:
public class MyClass2 {
public void myMethod2(){
//something something again
}
}
现在您可以使用:
MyClass1 myObject1;
myObject1.myMethod1();
但是:
我猜在第二个示例中,您使用的是静态方法,它不需要使用new操作符创建新的对象实例 这将在任何地方可用,在这里您不使用新的创建对象:
public class MyClass1 {
public static void myMethod1(){
//something something
}
}
这需要创建新对象:
public class MyClass2 {
public void myMethod2(){
//something something again
}
}
现在您可以使用:
MyClass1 myObject1;
myObject1.myMethod1();
但是:
您必须创建一个类(类型),它是该类型的稍后实例化对象的定义 e、 g 稍后,在代码的其他地方,您可以通过调用该类型的构造函数获得该类型的实例。e、 g
MyClass instance = new MyClass();
如果向指定类添加更多方法,则可以对实例化对象调用这些方法:
instance.someMethod();
您必须创建一个类(类型),它是该类型的稍后实例化对象的定义 e、 g 稍后,在代码的其他地方,您可以通过调用该类型的构造函数获得该类型的实例。e、 g
MyClass instance = new MyClass();
如果向指定类添加更多方法,则可以对实例化对象调用这些方法:
instance.someMethod();
您必须创建一个类(类型),它是该类型的稍后实例化对象的定义 e、 g 稍后,在代码的其他地方,您可以通过调用该类型的构造函数获得该类型的实例。e、 g
MyClass instance = new MyClass();
如果向指定类添加更多方法,则可以对实例化对象调用这些方法:
instance.someMethod();
您必须创建一个类(类型),它是该类型的稍后实例化对象的定义 e、 g 稍后,在代码的其他地方,您可以通过调用该类型的构造函数获得该类型的实例。e、 g
MyClass instance = new MyClass();
如果向指定类添加更多方法,则可以对实例化对象调用这些方法:
instance.someMethod();
首先,快速解释一下new
关键字。
类就像创建对象的蓝图。所以在这段代码中:
public class Cat {
// This is a constructor
public Cat() {
}
public void purr() {
System.out.println("prrrrrrrr");
}
}
这个班叫猫。每次编写new Cat()
,我们都在创建Cat类的一个新对象(实例)。每次创建新的cat对象时,都会调用构造函数
假设我们想让猫咕噜叫。为此,我们首先需要创建一个cat对象(否则,什么是purring?),这样我们就可以编写newcat().purr()代码>
这会给我们创造一只新的猫,然后告诉那只猫咕噜叫
假设有一种方法实际上不需要猫来工作,例如:
public static void buyCatCollar() {
}
我们可以买一个猫项圈而不用养猫。我们不需要一只真正的猫来这么做
我们在这里添加了静态
关键字,这意味着该方法属于类,而不是对象。这意味着我们可以编写Cat.buyCatCollar()
,而无需使用Cat对象。这意味着我们不需要编写新的Cat()
,因为我们实际上不需要一只猫来买项圈
现在继续讲你的例子。
当你写作时:
public class ButtonClickListener implements OnClickListener{
VerificationMethods VM;
VM.authenticateForFunctionsandNumbers();
}
这意味着VM是VerifcationMethods类的一个实例。当您编写VM.authenticateforfunctions和numbers()时代码>您将得到一个空指针异常,因为您从未实际将VM设置为新实例。您需要将其更改为:
public class ButtonClickListener implements OnClickListener{
VerificationMethods VM = new VerificationMethods();
VM.authenticateForFunctionsandNumbers();
}
或者,假设不需要新实例,可以将authenticateForFunctionsandNumbers()方法设置为静态,然后编写:
public class ButtonClickListener implements OnClickListener{
VerificationMethods.authenticateForFunctionsandNumbers();
}
但除非将静态
关键字添加到方法中,否则这将不起作用。首先,快速解释一下新的
关键字。
类就像创建对象的蓝图。所以在这段代码中:
public class Cat {
// This is a constructor
public Cat() {
}
public void purr() {
System.out.println("prrrrrrrr");
}
}
这个班叫猫。每次编写new Cat()
,我们都在创建Cat类的一个新对象(实例)。每次创建新的cat对象时,都会调用构造函数
假设我们想让猫咕噜叫。为此,我们首先需要创建一个cat对象(否则,什么是purring?),这样我们就可以编写newcat().purr()代码>
这会给我们创造一只新的猫,然后告诉那只猫咕噜叫
假设有一种方法实际上不需要猫来工作,例如:
public static void buyCatCollar() {
}
我们可以买一个猫项圈而不用养猫。我们不需要一只真正的猫来这么做
我们在这里添加了静态
关键字,这意味着该方法属于类,而不是对象。这意味着我们可以编写Cat.buyCatCollar()
,而无需使用Cat对象。这意味着我们不需要编写新的Cat()
,因为我们实际上不需要一只猫来买项圈
现在继续讲你的例子。
当你写作时:
public class ButtonClickListener implements OnClickListener{
VerificationMethods VM;
VM.authenticateForFunctionsandNumbers();
}