相关疑难解决方法(0)

建设者总是必须公开吗?

我的第一个问题是 -

   class Explain() {
        public Explain() {
      }
   }
Run Code Online (Sandbox Code Playgroud)

构造函数是否应始终声明为公共?

如果我创建一个private构造函数怎么办?

我总是看到构造函数是隐含的public.那么为什么private构造函数有用呢?或者根本没用.因为没有人可以调用它,或者从不创建对象(因为private构造函数)!这是我的第二个问题.

java oop constructor design-patterns access-modifiers

50
推荐指数
5
解决办法
3万
查看次数

什么是java中默认构造函数的访问修饰符?

我们都知道,如果我们没有专门定义构造函数,编译器会插入一个不可见的零参数构造函数.我认为它的访问修饰符是公开的,但在处理内部类问题时,我发现也许我错了.这是我的代码:

public class Outer {
  protected class ProtectedInner {
    // adding a public constructor will solve the error in SubOuterInAnotherPackage class
    //public ProtectedInner() {}
  }
}
Run Code Online (Sandbox Code Playgroud)

并且Outer在另一个包中有一个子类:

public class SubOuterInAnotherPackage extends Outer {
  public static void main(String[] args) {
    SubOuterInAnotherPackage.ProtectedInner protectedInner 
      = new SubOuterInAnotherPackage().new ProtectedInner(); // Error!! Can't access the default constructor
  }
}
Run Code Online (Sandbox Code Playgroud)

您将在main()方法中收到错误,但如果向ProtectedInner类中添加公共构造函数,则会解决该错误.这就是为什么我认为默认构造函数的修饰符不公开!那么有谁能告诉我默认构造函数的访问修饰符是什么?

java access-specifier

30
推荐指数
1
解决办法
1万
查看次数

getConstructor()在java中没有参数

我似乎无法getConstructor用于没有参数的构造函数.我一直在

java.lang.NoSuchMethodException: classname.<init>()
Run Code Online (Sandbox Code Playgroud)

这是代码

interface InfoInterface {
    String getClassName();
    String getMethodName();
    String getArgument();
}

class asa implements InfoInterface {
    @Override
    public String getClassName() {
        return ("jeden");
    }
    @Override
    public String getMethodName() {
        return ("metoda");
    }
    @Override
    public String getArgument() {
        return ("krzyk");
    }
}

class Jeden {
    Jeden() {
        System.out.println("konstruktor");
    }

    public void Metoda(String s) {
        System.out.println(s);
    }
}

class Start {
    public static void main(String[] argv) {
        if (argv.length == 0) {
            System.err.println("Uzycie programu: java Start nazwa_klasy …
Run Code Online (Sandbox Code Playgroud)

java getconstructor

11
推荐指数
1
解决办法
2万
查看次数