java内部类的调用
1. jsp页面上如何调用java类里的内部类
1、新建一个项目,在src文件夹下添加一个包:如:test
2、再在包中添加一个类:如
package test;
public class conDatabase {
public String con(){
return "success";
}
}
3、在jsp文件的开头引入
<%@ page import= "test.* "%>
4、在<body> </body>中添加相应的java代码,如:
<%
String str;
conDatabase cd =new conDatabase();
%>
<%=cd.con() %>
2. Java在外界如何调用局部内部类
内部类和成员变量一样,通过外部类的实例调用内部类。
可以先创建外部类实例。
用外部类实例调用内部类构造方法创建内部类实例。
再用这个内部类实例调用内部类成员方法。
Aa=newA();
A.Bb=a.newB();
b.do1();//do是关键字,所以这里在do后面加了个1,否则无法编译。
3. java怎么调用另一个类中的方法中的内部类中的方法
class Hello {
public static void pt(){
new A().ppt();
class A {
void ppt(){//ppt()方法不能在其他类中调用,只能在pt()方法中被调用
System.out.println("hello word");
}
}
}
}
public class Test {
public static void main(String[] args){
Hello.pt();
}
}
4. java 内部类怎么调用外部类的函数
你好!
方法1:定义内部类的一个对象,用该对象调用外部类的成员函数
方法2:直接用语句:this.外部类的成员函数名。
仅代表个人观点,不喜勿喷,谢谢。
5. java外部类main方法调用内部类
main方法是主函数,是程序的入口,调用内部类,首先需要它的外部类,然后才可以获得。
6. Java 内部类如何被外部类调用
首先,你要搞清楚静态方法跟非静态方法的区别:
非静态方法是跟随着类的生命周期的,当类实例化时,非静态方法跟随着实例化对象产生,实例化对象可以调用类中的非静态方法,当实例化对象结束时,非静态方法也跟着结束。就是说,非静态方法是依附于实例化对象的,它的生命周期就是实例化对象的生命周期。
静态方法是不受制于类的实例化对象的,即静态方法从程序开始运行到最后释放内存结束是一直存在的,它的生命周期就是程序的生命周期。
从以上可知,静态方法调用非静态方法会造成一个问题,就是生命周期的不一致,比如说:程序刚刚开始运行时,类的实例化构造函数还没有执行,这时静态方法是调用不了非静态方法的;或者当实例化对象消亡之后,静态方法也是不能够去调用非静态方法的。
静态方法要想调用非静态方法,必须要通过实例化对象去调用;当然也可以把非静态方法变成静态方法,这样就不存在任何障碍了。
希望我的回答对你能够有所帮助。
7. java内部调用内部方法的问题
Java内部调用内部方法主要是通过内部类实现。Java内部类分两种,成员内部类和方法内部类。
代码如下:
1.成员内部类
/**
*成员内部类
*/
publicclassOuter{
privateintouter=1;
classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}
publicstaticvoidmain(String[]args){
Outer.Innerin=newOuter().newInner();
in.show();
}
}
2.方法内部类
/**
*方法内部类
*
*/
publicclassOuter2{
privateintouter=1;
publicvoidshowOut(){
classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}
newInner().show();
}
publicstaticvoidmain(String[]args){
Outer2in=newOuter2();
in.showOut();
}
8. Java内部类怎么直接调用外部类啊
publicclassOuter{
intx;
Strings="hello";
publicvoidtest(){
System.out.print("test");
}
publicclassInner{
ints=20;
publicvoidtestInner(){
//可以直接使用外部类的成员变量和成员方法
x=0;
test();
//如果外部类的成员变量和内部类变量重名,可以这样调用外部类的变量
Outer.this.s="test";
//当然你可以new外部类对象这也是没问题的
Outero=newOuter();
o.x=30;
o.test();
}
}
}
9. java 主方法怎么调用内部类的方法
System.out.println(x);//这个是55
System.out.println(In.x);//这个是9
楼主这两行是对的,楼上是不用兄弟认为人家这儿错了?
1,后面那个是无法做到的那个x是方法 的局部变量,在进入方法时被推到栈里,方法结束后就出栈了。除非有方式可以跑一个在主方法中的线程监控当前栈中变量,就像是Debug一样,我也研究好久这个,不过没发现有。
2,
也像1一样没有侵入性,你可以用字节码框架去操作类,动态地改变方法的行为,也就是说你可以在main方法中用程序语言去改变doit(x)方法里所做的事情。
3,
再侵入点儿,你可以传进那个doit(int)方法一个Callback, 你明白我意思?给你看个回调式:
public class HelloJava{
private interface Listener{
public void listenDoit(int x);
}
private static int x=55;
private class In{
private Listener listener;
private static final int x=9;
public In(Listener listener){this.listener=listener;}
public void doit(int x){
listener.listenDoit(x);
x=6;//这个X和上一行的应该是同一个吧?怎么在主方法里输出这个量?
listener.listenDoit(x);
HelloJava.this.x++;
}
}
public static void main(String[] args){
System.out.println(x);//这个是55
System.out.println(In.x);//这个是9
In in =new HelloJava().new In(new Listener(){
@Override
public void listenDoit(int x) {
System.out.println(x);
}});
in.doit(0);
System.out.println(x);//这个是55
System.out.println(In.x);//这个是10
}
}
还有许多方式可以做到,比如代理模式等等,不过都大同小异。该方法好处是不改变方法的原定义模型。如返回值从void改成int,如果doit的返回值本身就是String,要返回个其他的东西,怎么去改变返回值完成?
另外运行一下会发现最后两行输出不是55
10,
而是56,
9,你就知道HelloJava.this.x++;做的是什么了。
4,然后就是楼上朋友们都说的方式,返回值。
10. java中内部类该何时用,怎么用
1.在一个类内部还存在另一个类,则后者为内部类;
2.内部类可声明成public或private,当内部类声明成public或private时,对其访问的限制与成员变量和成员方法完全相同;
3.定义格式:
标识符 class 外部类的名称{
//外部类的成员
标识符 class 内部类的名称{
//内部类的成员
}
}
示例:
class Outer{ // 定义外部类
private String info = "hello world" ; // 定义外部类的私有属性
class Inner{ // 定义内部类
public void print(){ // 定义内部类的方法
System.out.println(info) ; // 直接访问外部类的私有属性
}
};
public void fun(){ // 定义外部类的方法
new Inner().print() ; // 通过内部类的实例化对象调用方法
}
};
public class InnerClassDemo01{
public static void main(String args[]){
new Outer().fun() ; // 调用外部类的fun()方法
}
};
这位童鞋可以试着不用内部类写个程序完成以上功能,你会发现代码明显比之前的更加麻烦和复杂,所以内部类的唯一好处是方便的访问外部类中的私有属性,从而减少代码。