小编jhl*_*u87的帖子

什么时候需要显式调用超类构造函数?

所以说我有一个扩展超类的子类.在什么情况下我需要显式键入super()以运行超类构造函数?

我正在看一本关于抽象类的书中的例子,当他们用非抽象子类扩展它时,子类的默认构造函数是空白的,并且有一个注释表明将调用超类的默认构造函数.与此同时,我也看到过这里有人问题没有明确调用的情况super().

区别于从子类的默认/非默认构造函数调用超类的默认/非默认构造函数?

java constructor subclass superclass

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

java方法调用有多贵

我是初学者,我一直都认为重复代码是不好的.但是,似乎为了不这样做,通常需要额外的方法调用.假设我有以下课程

public class BinarySearchTree<E extends Comparable<E>>{
    private BinaryTree<E> root;
    private final BinaryTree<E> EMPTY = new BinaryTree<E>();
    private int count;
    private Comparator<E> ordering;

    public BinarySearchTree(Comparator<E> order){
        ordering = order;
        clear();
    }

    public void clear(){
        root = EMPTY;
        count = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

将clear()方法中的两行复制并粘贴到构造函数中而不是调用实际方法,对我来说是否更为理想?如果是这样,它会产生多大的差异?如果我的构造函数进行了10次方法调用,每次调用只是将一个实例变量设置为一个值,该怎么办 什么是最好的编程实践?

java methods performance call

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

java尝试finally块来关闭流

我想在finally块中关闭我的流,但它会抛出一个IOException所以我似乎必须tryfinally块中嵌套另一个块才能关闭流.这是正确的方法吗?看起来有点笨重.

这是代码:

 public void read() {
    try {
        r = new BufferedReader(new InputStreamReader(address.openStream()));
        String inLine;
        while ((inLine = r.readLine()) != null) {
            System.out.println(inLine);
        }
    } catch (IOException readException) {
        readException.printStackTrace();
    } finally {
        try {
            if (r!=null) r.close();
        } catch (Exception e){
            e.printStackTrace();
        }
    }


}
Run Code Online (Sandbox Code Playgroud)

java file-io finally try-catch stream

31
推荐指数
5
解决办法
3万
查看次数

java为什么要将equals方法输入参数设为Object

我正在阅读一本关于数据结构的书.目前我在图表上,下面的代码是图表的顶点部分.

class Vertex<E>{
    //bunch of methods

    public boolean equals(Object o){
         //some code
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试实现这个equals方法时,我的编译器抱怨没有检查参数的类型,只是允许任何对象被发送.对我来说,为什么该参数不应该是Vertex而不是Object,这似乎有点奇怪.有没有理由为什么作者这样做或者这是一个错误或过时的例子?

java types equals

13
推荐指数
2
解决办法
7695
查看次数

如何使用Java EE IntelliJ IDEA社区版

我只有IntelliJ IDEA的社区版本,所以它没有完整的支持,但我想要它做的就是编译和识别Java EE类.到目前为止,我已经通过将glassfish-> modules中的所有JAR文件复制到我的项目文件夹中,然后在该文件夹上设置我的模块依赖项来实现它.是否有其他方法可以在不复制数百个JAR文件的情况下执行此操作,或者如果不升级到完整版本则无法实现?

intellij-idea java-ee

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

Rails中的嵌套布局

我无法找到执行以下操作的方法:

让我们在我的application.html.erb中说我有以下内容

<div id="one" >
    <%= yield %>
</div>
Run Code Online (Sandbox Code Playgroud)

然后我想要另一个布局文件asdf.html.erb

<div id="two">
    <%= yield %>
</div>
Run Code Online (Sandbox Code Playgroud)

我想要最终输出

<div id="one>
   <div id="two">
      <%= yield %>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

可能吗?谢谢.

layout nested ruby-on-rails

12
推荐指数
2
解决办法
4532
查看次数

matlab如何遍历工作空间中的所有对象

我有一个matlab工作区,其中所有变量都是使用load命令从.mat文件加载的.现在,我想遍历所有这些对象并对它们执行操作.

有没有明确说明他们的名字访问对象?例如工作区(1)?

workspace matlab object

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

java可以从cmd运行jar,但不能通过双击运行

我刚刚使用jdk7创建了一个jar文件.我试过运行它,但一直出错.事实证明它指的是jre6而不是jdk7中的jre.所以,我用以下命令来改变它

ftype jarfile ="C:\ path to jre\bin\javaw.exe"-jar"%1"%*

之后,我尝试再次双击我的jar文件,但它弹出一个窗口,要求我选择一个程序来打开它.当我选择与上面相同的javaw.exe文件时,它会运行但会立即退出而不执行任何操作.我可以通过执行java -jar file.jar命令在cmd中运行它.我甚至尝试删除.jar注册表项,但这让我回到了让我选择要打开的程序的地步.如果重要的话,我正在运行Windows 7终极版.

编辑:在注册表中有3个子键:OpenWithList,OpenWithProgids和UserChoice.我已将所有默认值更改为上面的路径,但UserChoice除外,它不允许我从regedit编辑它.当我删除它并尝试运行jar文件时,它会打开选​​择一个程序再次打开窗口.由于某种原因,它忽略了其他注册表项

java windows jar

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

Rails中的set_primary_key错误

我正在创建一个名为的表Index.这是迁移:

class CreateIndices < ActiveRecord::Migration
  def change
    create_table :indices, {:id => false} do |t|
      t.string :name
      t.float :returns, array: true, default: []
      t.float :navs, array: true, default: []
      t.float :sharpe

      t.timestamps
    end

    execute "ALTER TABLE indices ADD PRIMARY KEY (name);"
  end
end
Run Code Online (Sandbox Code Playgroud)

一切正常.我在另一个Stack Overflow问题中看到,我必须set_primary_key在我的模型中包含命令才能使它工作,所以我在index.rb中有以下内容

class Index < ActiveRecord::Base
  set_primary_key :name

end
Run Code Online (Sandbox Code Playgroud)

除了这两个文件之外,我没有更改默认的Rails脚手架(该应用程序是使用Postgres创建的默认数据库).当我去localhost:3000/indices,我得到以下错误

undefined method `set_primary_key' for #<Class:0x37132e0>
Run Code Online (Sandbox Code Playgroud)

如果我注释掉set_primary_key它会加载常规的空脚手架,但我认为这并没有给我我想要的主键功能.我究竟做错了什么?

ruby-on-rails primary-key

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

JButton的Java子类重写了setEnabled方法的问题

我有一个名为ImageButton的自定义按钮类,它扩展了JButton.在其中我有一个我想要调用的setEnabled方法而不是JButton的setEnabled方法.

我的代码如下.在我的另一个类中,我创建了一个ImageButton的新实例,但是当我尝试使用setEnabled方法时,它会直接进入JButton的setEnabled方法.甚至在我运行代码之前,我的IDE就告诉我从未使用过ImageButton的setEnabled方法.如果我将方法更改为"SetOn",它可以正常工作.那么为什么我不能使用与超类相同的名字呢?我认为它应该隐藏超类方法,如果它是相同的名称?

public class ImageButton extends JButton{

    public ImageButton(ImageIcon icon){
        setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
        setIcon(icon);
        setMargin(new Insets(0,0,0,0));
        setIconTextGap(0);
        setBorderPainted(true);
        setBackground(Color.black);
        setText(null);
    }

    public void setEnabled(Boolean b){
        if (b){
            setBackground(Color.black);
        } else {
            setBackground(Color.gray);
        }
        super.setEnabled(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance swing jbutton method-hiding

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