java内部类,集合,反射

java内部类,集合,反射,第1张

反射,很有用,在著名的框架中,SSh就大量使用反射机制,例如可以在xml中设置一个分割中文字体的类,在java运行的时候,就可以读取xml知道类的路径,然后使用反射将这个类给加载了,就可以使用这个类啦。

集合的话,相当于数组,但是数组只可以固定大小,集合可以随便大小,是动态的,这样就方便多了。还有的集合提供键-值关系映射,例如Map,很方便。

部类也很好用,例如你想用一个类,但是这个类又没有必要用作他用,就可以声明内部类,当成一个成员使用啦,这样结构更清晰吧。还有匿名内部类

匿名内部类:

T a=new T(){

public H(){

}

};

例如上面的T是一个接口或抽象类,想要给这个接口或抽象类声明一个实现类,但是这个实现类只用一次就行了,其他的没有用到的,就可以用匿名内部类。不用另外去苦逼的去声明。方便

我懂你的意思,亲。你不明白的应该是在主类怎么调用内部类的方法,其实就是内部类对象的创建问题哈 亲。下面我举个例子 希望亲能进一步的对内部类对象的创建和方法的使用有很好的了解哦 ,注意我再里面的注释哦,应该很好理解的,如果还不懂亲可以继续问哈,一直在呢

public class A

{

public static void main(String[] args)

{

A a=new A();//首先创建一个主类对象

B b=anew B();//创建一个内部类对象

/

由于内部类是在主类当中。当创建内部类对象的时候,在new前面

需要带上主类对象(就相当于路径一样,B在A的里面我要找到B肯定要先找到A是吧)

希望这点亲能好好理解,这就是内部类对象的创建

/

bptm();//调用内部类的方法

}

class B

{

public void ptm()

{

Systemoutprintln("你好啊,我是内部类方法");

}

}

}

如果亲喜欢就给个赞和满意哦 谢谢

1/2这个有一个访问权限问题,内部类可以包装类的范围内访问,当然也可以通过类名来访问public静态变量,注意,在类是public的时候,其他外部类也可以用过ABa这样来访问这个内嵌类的变量,至于不是public的时候,内部类和类的数据成员的访问权限一样

3关于内部类的继承问题,情况比较复杂,我的建议是,不要玩内部类继承了,很多时候连逻辑意义都解释不清楚,以下是一些例子

由于内部类构建器必须同封装类对象的一个句柄联系到一起,所以从一个内部类继承的时候,情况会稍微变得有些复杂。这儿的问题是封装类的“秘密”句柄必须获得初始化,而且在衍生类中不再有一个默认的对象可以连接。解决这个问题的办法是采用一种特殊的语法,明确建立这种关联:

//: InheritInnerjava

// Inheriting an inner class

class WithInner {

class Inner {}

}

public class InheritInner

extends WithInnerInner {

//! InheritInner() {} // 编译错误

InheritInner(WithInner wi) {

wisuper();

}

public static void main(String[] args) {

WithInner wi = new WithInner();

InheritInner ii = new InheritInner(wi);

}

} ///:~

从中可以看到,InheritInner只对内部类进行了扩展,没有扩展外部类。但在需要创建一个构建器的时候,默认对象已经没有意义,我们不能只是传递封装对象的一个句柄。此外,必须在构建器中采用下述语法:

enclosingClassHandlesuper();

它提供了必要的句柄,以便程序正确编译。

4是的,匿名类只能在该类引用。

匿名类又没有类名,所以匿名类不能有构造器,而将构造器参数传递给超类的构造器。尤其是在内部类实现接口的时候,不能有任何构造参数。匿名类的引用类型是一个没有名称的类,你会看到编译后产生类似于test$1class的文件$1就是第1个匿名类的意思。

5最常见的情况就是创建监听器的实例

JButton addBtn = new JButton("Add");

addBtnaddActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

//

}

});

以上例子创建了监听器的一个实现并实例化

可以说,匿名类就是为了方便程序员如此使用而出现的

以上就是关于java内部类,集合,反射全部的内容,包括:java内部类,集合,反射、java 中成员内部类问题,我在class A 里 有个内部类B ,A的main方法,调用B ,报错,为何,求解!、关于java的内部类的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10102887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存