1

我尝试封装。接口例外,静态内部类工作,非静态内部类不工作,无法理解术语:嵌套类,内部类,嵌套接口,接口抽象类——听起来太重复了!

坏的!--- 来自接口的异常“非法类型”显然是因为值是常量(?!)

    static interface userInfo
    {
            File startingFile=new File(".");
            String startingPath="dummy";
            try{
                    startingPath=startingFile.getCanonicalPath();
            }catch(Exception e){e.printStackTrace();}
    }

多种方法:接口、静态内部类图像 VS 非静态内部类图像

import java.io.*;
import java.util.*;

public class listTest{
        public interface hello{String word="hello word from Interface!";}

        public static class staticTest{
                staticTest(){}
                private String hejo="hello hallo from Static class with image";
                public void printHallooo(){System.out.println(hejo);}
        }
        public class nonStatic{
                nonStatic(){}
                public void printNonStatic(){System.out.println("Inside non-static class with an image!");}
        }
        public static class staticMethodtest{
                private static String test="if you see mee, you printed static-class-static-field!";
        }

        public static void main(String[] args){
                //INTERFACE TEST
                System.out.println(hello.word);
                //INNNER CLASS STATIC TEST
                staticTest h=new staticTest();
                h.printHallooo();
                //INNER CLASS NON-STATIC TEST
                nonStatic ns=(new listTest()).new nonStatic();
                ns.printNonStatic();
                //INNER CLASS STATIC-CLASS STATIC FIELD TEST
                System.out.println(staticMethodtest.test);
        }
}

输出

hello word from Interface!
hello hallo from Static class with image
Inside non-static class with an image!
if you see mee, you printed static-class-static-field!

有关的

4

6 回答 6

2

我想你想这样做:

static class userInfo
    {
         public static void something() {
            File startingFile=new File(".");
            String startingPath="dummy";
            try{
                    startingPath=startingFile.getCanonicalPath();
            }catch(Exception e){e.printStackTrace();}
         }
    }
于 2010-04-29T05:24:17.740 回答
2

问题是您在方法之外编写代码。为此,您确实需要一个类,并且必须将代码放入方法中。例如:

static class UserInfo
{
    public static void myMethod()
    {
        File startingFile = new File(".");
        String startingPath = "dummy";
        try
        {
            startingPath = startingFile.getCanonicalPath();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

这确实假设 java.io.File 已导入。

然后您可以调用 UserInfo.myMethod();

您可能还想导入 java.util.IOException 并捕获 IOException 而不是一般的异常。

此外,根据 Java 约定,类和接口以大写字母开头。

编辑:描述您最近对您的问题的评论:

当您想强制相似的类(想想不同类型的 DVD 播放器)具有相同的基本功能(播放 dvd、停止、暂停)时,使用接口。类似地使用抽象类,但是当所有类都实现一些同样的事情同样的方式。

于 2010-04-29T06:28:57.290 回答
1

您不能将代码放入接口中,接口仅描述对象的行为方式。即使你使用类,你也应该把这种代码放在一个方法中,而不是直接放在类体中。

于 2010-04-29T05:13:21.337 回答
0

接口中不能有实际代码,只有方法签名和常量。你想做什么?

于 2010-04-29T05:12:26.607 回答
0

接口中不能有代码。只是方法签名。顶级接口不能是静态的。

我建议您从这里开始学习 Java 。

于 2010-04-29T05:14:33.567 回答
0

看起来你想在class这里写一个。

于 2010-04-29T05:17:31.267 回答