小编Ins*_*son的帖子

什么是一个类的客户

我一直认为类的客户端是使用引用来访问该类的实例字段/方法,即另一个类(来自其自己的方法).但是当我想到一些细节时,有一些我无法弄清楚的事情.

在Java中,我知道一些可以放置动作语句的地方.

  • 在方法内部(实例/静态)
  • 内联初始化(当你在private int x = 5中声明一个实例变量时;)
  • 静态块

也许还有更多我不知道或不记得的东西.

问题的第一部分是所有这些被认为是客户,如果他们在另一个班级?当他们在同一个班级时,他们也可以访问私人物品吗?

第二部分是:当JVM调用方法(如main和finalize)时,它们也被认为是客户端吗?(这些电话不是来自一个班级?)

编辑:客户端只能访问公共方法和变量吗?如果它访问包字段(如果在同一个包中),我们不能称它为客户端.

java

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

classLoader.getResource在jar文件中不起作用

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("com/x/y/z.cfg");
File file = new File(url.getPath());
Run Code Online (Sandbox Code Playgroud)

这在从Eclipse运行jar文件时起作用,但在jar文件中运行时不起作用.

java.io.FileNotFoundException:file:\ C:\ Users \nova\Desktop\Matcher.jar!\ c om\x\y\z.cfg

这不是重复的.我检查了所有其他问题,没有有用的信息.

java eclipse

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

命令模式和适配器模式之间的区别

在适配器模式中,我们将对象的接口更改为另一个对象,以便从另一个接口使用它。

在命令模式中,我们将对象的接口更改为通用的命令接口,提供一个执行方法来调用真正的方法来完成工作。这不是适配器模式已经做的完全一样的事情吗?那么命令模式有什么意义呢?

design-patterns

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

垃圾收集活动

如果我没有弄错的话,Activity对象永远不会从内存中销毁,它们总是存在,直到进程被终止.所以调用finish()或Android操作系统来破坏你的Activity并不意味着它在内存中被破坏,而只意味着它现在处于'被破坏状态'(非官方名称).

为了演示,我确实覆盖了我的活动的finalize方法,然后从另一个活动的按钮点击事件中使用了System.gc().我看到正在调用我的活动的finalize方法.如果在进程运行时无法销毁活动对象,那么活动如何被垃圾回收?

android garbage-collection android-activity

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

在汇编中,指令指定数据类型吗?

我是汇编语言编程(x86)的初学者。

以下说法是否正确?

在汇编中,BYTE、WORD、DWORD 等数据类型分别表示 8 位、16 位和 32 位模式,而不仅仅是整数。它们本身没有意义,它们只是位模式。使用它们的指令赋予了它们意义。

x86 assembly

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

应该从事件调度程序或主线程控制Swing GUI应用程序吗?

我读了几本关于Java的书.在所有这些中,至少有一章教授GUI编程.在所有这些中,创建一个简单的表单应用程序遵循以下逻辑:

MyFrame.java

public class MyFrame extends JFrame
{
    JButton button1;

    public MyFrame()
    {
        button1 = new JButton("Click here.");
    }
}
Run Code Online (Sandbox Code Playgroud)

FrameTest.java:

public class FrameTest
{
    public static void main(String[] args)
    {
        MyFrame myFrame = new MyFrame();

        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.setSize(600, 600);
        myFrame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上,只是将JFrame子类化为创建表单并将其他组件声明为实例变量,并在构造函数中初始化这些组件.然后创建另一个测试类,在该类中实例化框架子类并调用它的一些方法使其可见.

但在并发课程中,我了解到我们有一个主线程,它在我们创建的每个应用程序中运行main().据我所知,当我们使用Swing创建GUI应用程序时,我们有另一个线程(Event Dispatcher Thread).因此,如果我没有记错,在每个基于Swing的GUI应用程序中至少有两个线程.这使得每个GUI应用程序都是多线程的.在我读过的一些文章和教程中,它说Swing不支持多线程,因此只能在Event Dispatcher Thread中创建和修改所有GUI组件,否则可能会出现线程干扰和内存不一致错误.

即使在维基百科(http://en.wikipedia.org/wiki/Swing_%28Java%29)中最简单的例子中,它也是通过invokeLater方法制作的.

那么哪一个是真正的方法?我哪里错了?

java swing multithreading invokelater event-dispatch-thread

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