永发信息网

如何在外部实例化私有静态内部类

答案:3  悬赏:30  手机版
解决时间 2021-04-05 19:35
  • 提问者网友:轻浮
  • 2021-04-04 22:14
如何在外部实例化私有静态内部类
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-04-04 22:58
class T1 {
class T2 {
public T2() {
System.out.println("T2");
}
}
static class T3 {
public T3() {
System.out.println("T3");
}
}
private static class T4 {
public T4() {
System.out.println("T4");
}
}
public static void main(String args[]) {
//实例化内部类T4,
//因为内部类T4是private的,所以不可被其他类访问,自然不能在其他类中new出来
T4 t4 = new T1.T4();
}
}
public class A {
public static void main(String args[]) {
//实例化内部类T2
T1 t1 = new T1();
T1.T2 t2 = t1.new T2();
//实例化内部类T3
T1.T3 t3 = new T1.T3();
}
}
全部回答
  • 1楼网友:时间的尘埃
  • 2021-04-05 00:51
你这也太高深了吧?先弄懂概念吧,static只能修饰属性,方法,代码段,至于静态类?Java中的类根本就不能用static修饰!如果你要是用static修饰一个class的话,这是错误的!private私有的,只能被这个类本身访问(类可见性);
  • 2楼网友:鱼忧
  • 2021-04-04 23:17
自己做一下实验不就知道了?
public class A {
private static class B {
public B(){
System.out.println("b");//输出b代表B已经实例化
}
}
public static void main(String[]args){
//直接实例一个B(B是静态的)
B a = new B();
}
}
//输出b
如果你是在不同包的类中这样实例化就不可以了(根本就无法实例化B),因为B是private修饰的
如过静态内部累B是public修饰的
public class A {
public static class B {//private改成public
public B(){
System.out.println("b");//输出b代表B已经实例化
}
}
}
package ....
public class C {//另外一个类(也可能不在同样的包下)
public static void main(String[]args){
A.B a = new A.B(); //实例化A的静态内部类B
}
}
在别的包中的类直接 A.B b = new A.B(); 就可以实例化了

参考资料:本人测试

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯