JAVA问题,创建局部内部类对象可以(外部类对象.new内部局部类)这么写吗?

如何在其他类中使用另一个外部类中的局部内部类中的方法?... 如何在其他类中使用另一个外部类中的局部内部类中的方法? 展开
 我来答
_小小程序猿
2017-08-04 · TA获得超过115个赞
知道小有建树答主
回答量:74
采纳率:100%
帮助的人:17.7万
展开全部
  1. 首先,如果你要在外部类中创建内部类对象,直接new就行。

    如果你要在这个外部类之外调用。不好意思必须通过接口调用。

    至于你提的问题,java中好像没这么玩的。下面是我以前学习时候的代码。贴出来你研究下


    public class Outer {
        public static IA test() {
            String addr = "北京";
            class Inner implements IA {
                private int index;
                @Override
                public void fun() {
                    System.out.println("局部内部类的实例方法被调用,访问类中实例属性 index=" + index);
                }
                public Inner(int index) {
                    this.index = index;
                }
            }
            Inner inner = new Inner(100);
            return inner;
        }
    public interface IA {
        //接口中必须有你要从外界调用的方法;
        void fun();
    }

    public class test {

public static void main(String[] args) {
//正确的调用方法,另该内部类实现某接口(接口中必须有你要调用的方法),通过接口类型调用方法:
//能调用到局部内部类中的方法,自然也就能通过方法访问外部类对象了
IA ia = Outer.test();
ia.fun();
}
}

songyipangbuo
2012-10-23 · TA获得超过744个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:255万
展开全部
你说的是可行的。。
这是我的测试代码:
public class tt2 {
public class A{
public class B{

}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
tt2 tt = new tt2();
A a = tt.new A();
A.B b = a.new B();
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信黛娥3c
2012-10-23 · TA获得超过111个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:97.2万
展开全部
不能 局部内部类 它的访问范围与局部变量一样;局部变量 你能这样调用么;除非是内部类
内部类就可以这样调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangwenchun5
2012-10-23 · 超过88用户采纳过TA的回答
知道小有建树答主
回答量:632
采纳率:0%
帮助的人:243万
展开全部
不知道你说是不是这样子的:

package com.chat.client;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.chat.bean.MessageBean;
public class Client {
private JFrame f;
private JTextArea text;
private JScrollPane sp;
private JTextField msg;
private JButton btn;
private JPanel p;

private Socket s;
private ObjectOutputStream oos;

public Client(){
init();
initClient();
}

public void initClient(){
try{
s = new Socket("127.0.0.1",8888);
oos = new ObjectOutputStream(s.getOutputStream());
new ClientThread().start();
}catch(Exception e){
e.printStackTrace();
}
}

public void init(){
f = new JFrame("Client");
text = new JTextArea();
sp = new JScrollPane(text);
msg = new JTextField();
btn = new JButton("Send");
p = new JPanel();
p.setLayout(new BorderLayout());
p.add(msg,BorderLayout.CENTER);
p.add(btn,BorderLayout.EAST);
f.add(sp,BorderLayout.CENTER);
f.add(p,BorderLayout.SOUTH);
f.setSize(500, 400);
f.setVisible(true);

f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
MessageBean bean = new MessageBean();
bean.setIpAddress(InetAddress.getLocalHost().getHostAddress());
bean.setMessage(msg.getText());
oos.writeObject(bean);
oos.flush();
}catch(Exception e1){
e1.printStackTrace();
}
msg.setText("");
}
});
}

class ClientThread extends Thread{
private ObjectInputStream ois;
private String key = "key";
public ClientThread(){
try {
ois = new ObjectInputStream(s.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
public void run(){
while(true){
try{
MessageBean bean = (MessageBean)ois.readObject();
synchronized(key){
text.append(bean.getIpAddress()+"\n");
text.append(bean.getMessage()+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
new Client();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
画新子F
2012-10-23 · TA获得超过1189个赞
知道小有建树答主
回答量:390
采纳率:50%
帮助的人:411万
展开全部
你内部类对象是应该有在外部类使用吧?
那么,直接构造一个成员属性即可,指向内部类,然后在另一个类中,调用外部类,再调用外部类中声明的内部类属性,再去调用内部类方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式