VB6 为什么这么简单的递归程序drink停不下来来?

我随便写了一个
运行的时候抛出 ng.StackOverflowError错误。说我这个应用程序递归太深而发生堆栈溢出。
大家帮我看看为什么会递归太深?
import
t.*;
import javax.swing.*;
public class ButtonGroup extends JDialog{
private JRadioButton jRadioButton1_1=new JRadioButton("单选按钮1_1",true);
private JRadioButton jRadioButton1_2=new JRadioB
我随便写了一个
运行的时候抛出 ng.StackOverflowError错误。说我这个应用程序递归太深而发生堆栈溢出。
大家帮我看看为什么会递归太深?
import
t.*;
import javax.swing.*;
public class ButtonGroup extends JDialog{
private JRadioButton jRadioButton1_1=new JRadioButton("单选按钮1_1",true);
private JRadioButton jRadioButton1_2=new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3=new JRadioButton("单选按钮1_3");
private ButtonGroup buttonGroup1=new ButtonGroup();
private JRadioButton jRadioButton2_1=new JRadioButton("单选按钮2_1",true);
private JRadioButton jRadioButton2_2=new JRadioButton("单选按钮2_2");
private JRadioButton jRadioButton2_3=new JRadioButton("单选按钮2_3");
private ButtonGroup buttonGroup2=new ButtonGroup();
public ButtonGroup(){
setTitle("测试ButtonGroup");
setModal(true);
setSize(200,150);
setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
setResizable(false);
tContentPane().add(jRadioButton1_1);
tContentPane().add(jRadioButton1_2);
tContentPane().add(jRadioButton1_3);
d(jRadioButton1_1);
d(jRadioButton1_2);
d(jRadioButton1_3);
tContentPane().add(jRadioButton2_1);
tContentPane().add(jRadioButton2_2);
tContentPane().add(jRadioButton2_3);
d(jRadioButton2_1);
d(jRadioButton2_2);
d(jRadioButton2_3);
show(true);
public static void main(String[] args) {
tLookAndFeel( tSystemLookAndFeelClassName());
}catch(Exception e){}
ButtonGroup bg=new ButtonGroup();
// ow(true);
把相应的类名和文件名更改后,运行成功。在没有更改前,ButtonGroup本身已经是已有类,你相当于重写ButtonGroup类,而你类中再次调用ButtonGroup的构造器,造成无中止递归,因此就会溢出了。
//bGroup.相关信息
import
t.*;
import javax.swing.*;
public class bGroup extends JDialog{
private JRadioButton jRadioButton1_1=new JRadioButton("单选按钮1_1",true);
private JRadioButton jRadioButton1_2=new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3=new JRadioButton("单选按钮1_3");
private ButtonGroup buttonGroup1=new ButtonGroup();
private JRad...
把相应的类名和文件名更改后,运行成功。在没有更改前,ButtonGroup本身已经是已有类,你相当于重写ButtonGroup类,而你类中再次调用ButtonGroup的构造器,造成无中止递归,因此就会溢出了。
//bGroup.相关信息
import
t.*;
import javax.swing.*;
public class bGroup extends JDialog{
private JRadioButton jRadioButton1_1=new JRadioButton("单选按钮1_1",true);
private JRadioButton jRadioButton1_2=new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3=new JRadioButton("单选按钮1_3");
private ButtonGroup buttonGroup1=new ButtonGroup();
private JRadioButton jRadioButton2_1=new JRadioButton("单选按钮2_1",true);
private JRadioButton jRadioButton2_2=new JRadioButton("单选按钮2_2");
private JRadioButton jRadioButton2_3=new JRadioButton("单选按钮2_3");
private ButtonGroup buttonGroup2=new ButtonGroup();
public bGroup(){
setTitle("测试ButtonGroup");
setModal(true);
setSize(200,150);
setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
setResizable(false);
tContentPane().add(jRadioButton1_1);
tContentPane().add(jRadioButton1_2);
tContentPane().add(jRadioButton1_3);
d(jRadioButton1_1);
d(jRadioButton1_2);
d(jRadioButton1_3);
tContentPane().add(jRadioButton2_1);
tContentPane().add(jRadioButton2_2);
tContentPane().add(jRadioButton2_3);
d(jRadioButton2_1);
d(jRadioButton2_2);
d(jRadioButton2_3);
show(true);
}
public static void main(String[] args) {
try{
tLookAndFeel( tSystemLookAndFeelClassName());
}catch(Exception e){}
bGroup bg=new bGroup();
// ow(true);
}
}
运行结果如图:
其他答案(共1个回答)
运行顺序如下:
1.
tLookAndFeel( tSystemLookAndFeelClassName());
} catch (Exception e) {
ButtonGroup bg = new ButtonGroup();
此处调用构造函数
private JRadioButton jRadioButton1_1 = new JRadioButton("单选按钮1_1", true);
private JRadioButton jRadioButton1_2 = new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3 = new JRadioButton("单选按钮1_3");
声明初始化
private ButtonGroup buttonGroup1 = new ButtonGroup();
又一次调用构造函数
private JRadioButton jRadioButton1_1 = new JRadioButton("单选按钮1_1", true);
private JRadioButton jRadioButton1_2 = new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3 = new JRadioButton("单选按钮1_3");
又一次声明初始化
private ButtonGroup buttonGroup1 = new ButtonGroup();
又又一次调用构造函数
private JRadioButton jRadioButton1_1 = new JRadioButton("单选按钮1_1", true);
private JRadioButton jRadioButton1_2 = new JRadioButton("单选按钮1_2");
private JRadioButton jRadioButton1_3 = new JRadioButton("单选按钮1_3");
又又一次声明初始化
以此,成递归死循环,直至相关信息溢出,抛出StackOverflowError
请注意JAVA的运行机制
XML 关于反射的问题 参考如下的XML...
jsp 迭代数据
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区}

我要回帖

更多关于 drink停不下来 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信