小编Mar*_*tin的帖子

为什么两个程序有前向引用错误而第三个没有?

以下内容无法编译,给出"非法转发引用"消息:

class StaticInitialisation {

    static
    {
        System.out.println("Test string is: " + testString);
    }

    private static String testString;

    public static void main(String args[]) {
        new StaticInitialisation();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,以下编译:

class InstanceInitialisation1 {

    {
        System.out.println("Test string is: " + this.testString);
    }

    private String testString;

    public static void main(String args[]) {
        new InstanceInitialisation1();
    }
}
Run Code Online (Sandbox Code Playgroud)

但以下内容无法编译,给出"非法转发引用"消息:

class InstanceInitialisation2 {

        private String testString1;

    {
        testString1 = testString2;
    }

    private String testString2;

    public static void main(String args[]) {
        new InstanceInitialisation2();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么StaticInitialisation和InstanceInitialisation2不能编译,而InstanceInitialisation1呢?

java static instance forward

53
推荐指数
1
解决办法
3273
查看次数

Android Studio:什么导致logcat电池供电日志?

我有一个Android智能手机使用USB线连接到我的Mac.运行Android Studio时,LOGCAT中会显示以下内容.这些线不断重复,有时以略微不同的顺序重复.我不清楚导致这种情况的原因以及如何解决这个问题......

08-09 16:17:31.554 2208-20167/? D/NetlinkSocketObserver: NeighborEvent{elapsedMs=11269730, 192.168.1.254, [5464D91A00EE], RTM_NEWNEIGH, NUD_STALE}
08-09 16:17:32.829 27970-27970/? E/NEW_BHD: Battery Power Supply logging Daemon start!!!!!
08-09 16:17:32.830 27970-27970/? E/NEW_BHD: Cannot run on production devices!
08-09 16:17:37.856 27971-27971/? E/NEW_BHD: Battery Power Supply logging Daemon start!!!!!
08-09 16:17:37.857 27971-27971/? E/NEW_BHD: Cannot run on production devices!
08-09 16:17:42.881 27972-27972/? E/NEW_BHD: Battery Power Supply logging Daemon start!!!!!
08-09 16:17:42.882 27972-27972/? E/NEW_BHD: Cannot run on production devices!
08-09 16:17:47.901 27973-27973/? E/NEW_BHD: Battery Power Supply logging Daemon start!!!!!
08-09 16:17:47.902 …
Run Code Online (Sandbox Code Playgroud)

android smartphone device logcat android-studio

10
推荐指数
0
解决办法
1629
查看次数

Android Studio:设计视图中“创建景观变化”的按钮在哪里?

在哪里可以找到创建景观变化的按钮?

在我使用的 Android Studio 版本中,有一个按钮可以旋转屏幕,但不能添加变体。我正在使用 Android Studio 2.2 Preview 7

回答:

我正在寻找的按钮被“属性”视图隐藏了。

android android-studio

7
推荐指数
3
解决办法
1万
查看次数

为什么不能共享BoxLayout而FlowLayout可以共享?

我对此感到困惑.

案例A.

  1. 将JFrame的布局管理器设置为BoxLayout.
  2. 将JButton添加到JFrame容器中.
  3. 编译.
  4. 跑.
  5. 抛出异常:"线程中的异常"AWT-EventQueue-0"java.awt.AWTError:BoxLayout无法共享"

案例B

  1. 将JFrame的布局管理器设置为FlowLayout.
  2. 将JButton添加到JFrame容器中.
  3. 没有异常抛出.

为什么案例A抛出异常而案例B没有抛出异常?为什么FlowLayout和BoxLayout在这方面表现不同?在案例A中,"BoxLayout无法共享"是什么意思?

我在这个网站上读过一些关于这个异常消息的类似线程,但我仍然对与FlowLayout的比较以及异常消息的确切含义感到困惑.

java swing exception flowlayout boxlayout

6
推荐指数
1
解决办法
101
查看次数

Java Selenium:如何在不首先加载页面的情况下获取网页的HTML?

使用Selenium WebDriver for Java,是否可以在给定URL的情况下获取网页的HTML?

我知道,一旦在浏览器中加载了网页,就可以使用WebDriver.getPageSource()获得HTML。但是,为了提高效率,是否可以在不先将页面加载到浏览器中的情况下获取HTML?

html java selenium webdriver

5
推荐指数
1
解决办法
1499
查看次数

Java,在没有 try 块的情况下使用 throw

对于下面的方法,当它不在“try”块内时是否可以抛出异常?

public void setCapacity(x) throws CapacityExceededException {
    if (x > 10) throw new CapacityExceededException(x);
    else this.x = x;
}
Run Code Online (Sandbox Code Playgroud)

java exception try-catch throw

4
推荐指数
1
解决办法
2万
查看次数

Java,默认异常消息

鉴于以下内容:

public abstract class Test {
    public static void main(String[] args) {
        int[] testArray = {6, 3, 2};
        System.out.println(testArray[3]);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我得到:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Test1.main(Test1.java:5)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,JVM显示超出范围的索引,即3.

除了这个特定的例子,我选择不在程序的代码中捕获异常:

  1. 对于任何检查或未检查的异常,我如何找出JVM将显示的默认消息?

  2. 对于我自己编写的自定义异常类,以及我在代码中使用'throw'关键字生成的此类对象(但是,再次选择不捕获),我是否可以设置JVM的默认消息会显示?

java message default exception

4
推荐指数
1
解决办法
4455
查看次数

什么决定了Java中的组件可见性?

我正在编写一个使用JFrame对象和几个JPanel对象的Java GUI程序.JPanel对象使用paint()和repaint()方法,而一些JPanel对象使用JLabel和JButtons.当我运行程序时,这些不同组件中的一些组件在我希望它们的方式中是不可见的,即看起来有些组件正在隐藏其他组件.

什么决定程序运行时哪些组件可见?它取决于组件添加到顶级容器的顺序,还是每个对象的paint()方法的调用顺序?可以覆盖此默认可见性吗?

编辑:我应该添加一些JPanel(及其组件)相互重叠.

编辑:这是一个示例程序.什么决定哪些组件在屏幕上可见?例如,当Button2不是时,为什么Button1可见?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test1 extends JFrame {

  public Test1() {
    setLayout(null);
    setSize(500, 700);
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    add(new Test2());
    setVisible(true);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new Test1();
      }
    });
  }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test2 extends JPanel {

  public Test2() {
    setBounds(0, 0, 300, 500);
    setLayout(null);
    add(new Test3());
    add(new Test4());
    setVisible(true);
  }

  public void paint(Graphics g) {
    g.drawRect(0, 0, …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing components visibility

1
推荐指数
1
解决办法
401
查看次数

如果未实现FragmentManager.beginTransaction(),它如何返回FragmentTransaction对象?

以下是一些Android java代码:

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = new ThisClassExtendsFragment();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
Run Code Online (Sandbox Code Playgroud)

我对beginTransaction()的调用感到困惑.这似乎是一个抽象的方法,并没有在任何地方实现.然后如何返回FragmentTransaction对象?

java android fragment

1
推荐指数
1
解决办法
46
查看次数