0

我在同一个包中有一个文件 main.java 和其他几个文件。每个文件都是 something.class,我想执行它们,但是我在定位如何从 something.java 文件实例化类然后执行它时遇到问题。我是java新手,这只是我写的第二个程序,所以请温柔。

我正在使用的文件之一是 startmessage.java,这是我尝试过的:

Object StartMessage = new StartMessage();

我什至不知道这是否正确。非常感谢任何和所有帮助。

4

8 回答 8

2

类文件是编译的类。Java 类的源代码通常放在一个以它们自己命名的文件中。例如,对于您的 startmessage 类,您将使用 StartMessage.java。

从另一个文件中,您可以导入该类,然后您可以将其实例化为该类型的对象。

例如:

package example;
import StartMessage;
public class Example {

    public static void main (String args[]) {
        StartMessage startMessage = new StartMessage();
    }
}
于 2012-10-22T20:47:06.330 回答
0

案例很重要。

如果您的文件确实被称为 startmessage.java,并且您已经编译了它,并且想要创建它的实例,那么请尝试:

startmessage sm = new startmessage();
于 2012-10-22T20:46:10.560 回答
0

您必须导入要在整个代码中使用的 Java 类:

package <package_name>

import <location_of_class>

像这样:

package michael;

import parent.child.*; //use any method with *

关于导入和包的有用链接:http: //www.leepoint.net/notes-java/language/10basics/import.html

于 2012-10-22T20:46:14.357 回答
0

在 Java 中,文件必须完全按照它们包含的类命名。在大多数情况下,这是一个区分大小写的规则。一探究竟。

于 2012-10-22T20:46:27.923 回答
0

该代码段可以编译(假设您有一个带有默认构造函数的 StartMessage 类),但它不一定正确。通常,您将希望以下列方式声明对象:

<type> <name> = new <type>(<args>);

通过这种设计,您的代码段在以下形式中会更正确:

StartMessage message = new StartMessage();

但是,因为 StartMessage 是 Object 的子类,并且变量几乎可以命名为任何名称,所以您的原始代码编译得很好。

于 2012-10-22T20:46:33.427 回答
0
于 2012-10-22T20:47:31.197 回答
0

好吧,首先您的文件名必须与类名完全相同。例如:如果你命名了文件startmessage.java,那么你的类应该是这样的:

public class startmessage { }

但这不是命名java类的方法。正确的方法是:

public class StartMessage {}

要实例化一个类,你应该这样做:

StartMessage message = new StartMessage();

如果你这样做:

Object message = new StartMessage();

您将无法访问StartMessage类的方法。唯一的方法将在Object类中可用。

于 2012-10-22T20:49:04.997 回答
0

您可以通过创建实例(构造它)来实例化您的类。例如:

public class MyClass
{
  public void myMethod1() {System.out.println("Hello from method 1");}
  public void myMethod2() {System.out.println("Hello from method 2");}
}

public class Runner
{
  public static void main(String[] args)
  {
    // declare variable of type MyClass
    MyClass myInstance = new MyClass();

    // now execute its methods
    myInstance.myMethod1();

    myInstance.myMethod2();
  }
}

这将在控制台中产生输出:

Hello from method 1
Hello from method 2

根据您在问题中的示例,您应该使用 StartMessage 而不是 Object,例如

StartMessage myVariable = new StartMessage();
于 2012-10-22T20:50:36.270 回答