0

我的主要java代码是这样的:

package Javathesis;

//import... etc
//...


public class Javathesis; // My main class

{ 
    public static void // There are a lot of these classes here
    //...
    //...

    class x
    {
        String a;
        String b;

        x(String a, String b)
        {
            this.a = a;
            this.b = b;
        }
    }
    public void getAllDataDB1
    {
        ArrayList<ArrayList<x>> cells = new ArrayList<>();
        while(resTablesData1.next()) 
        {
            ArrayList<CellValue> row = new ArrayList<>();
            for (int k=0; k<colCount ; k++) {
            String colName = rsmd.getColumnName(i);
            Object o = resTablesData1.getObject(colName);
            row.add(new x(rsmd.getColumnType(),o.toString());
        }
        cells.add(row);
    }

    public static void main(String[] args) 
    {
        connectToDB1();
        // i want to call an instance of class "x" HERE!!!
    }
}

我如何在 public static void main 中调用类 x?难道我做错了什么?我已经测试了我知道的方式

Class class = new Class();
class.x(String a, String b);

但我收到错误。有人可以帮我解决这个问题吗?提前致谢。

4

4 回答 4

3

由于x是一个内部类,它需要一个外部类实例来获取引用:

Class x = new Javathesis().new x(a, b);

此外,需要从类声明中删除分号

x可以使用创建的引用调用in 中的方法

Java 命名约定表明类以大写字母开头。给类起一个比单个字母名称更有意义的名称也很好

于 2013-10-24T15:38:22.937 回答
2

此代码存在多个问题:

Class class = new Class();
class.x(String a, String b);

您不能将变量命名为“类”,它是保留字。此外, x 是一个类 - 你不能只调用它,你需要实例化它。

另外,你为什么要实例化一个类——它是一个封装关于 Java 类的知识的类?

类似的东西可能会起作用:

Javathesis thesis = new Javathesis();
Javathesis.x thesis_x = new thesis.x("a","b);

另外,请以大写字母开头类名 - 这是 Java 中的约定。

于 2013-10-24T15:44:29.997 回答
1

您应该创建一个内部类的实例

YourInnerClass inner = new YourOuterClass().new YourInnerClass(); 

然后调用它的方法

inner.doMyStuff();
于 2013-10-24T15:40:46.583 回答
0

要在不从该类实例化对象的情况下调用类方法,该方法必须声明为静态,然后使用类名点方法括号参数从您想要的任何位置调用。

公共课 x {

//构造函数等

公共静态 int add(int x,y) {

返回 x+y;

}

}

//从其他地方拨打电话

int y = x.add(4,5);

于 2013-10-24T15:42:57.130 回答