【问题标题】:Make a method be able to take two different types as parameters使方法能够接受两种不同的类型作为参数
【发布时间】:2016-09-18 17:39:09
【问题描述】:

我正在做一个项目,我有点厌倦了不断地编写 .sets,所以我打算用一些方法来缩写代码并使其更快。我正在使用 JButtons、JLabels 和 JTextFields,有没有办法可以编写一种方法来实现 .setInvisible(false);在这些中的任何一个上?还是我必须为每种类型提供单独的方法。谢谢!

例子:

public void siv((JButton || JLabel || JTextField) input) {
input.setVisible(false);
}

***编辑: 为了清楚起见,我试图看看Java是否有一种方法可以理解输入一个而不是需要所有三个。我正在尝试找到一种方法来做到这一点,而无需执行我在下面添加的操作:

private void siv(JButton input, JTextField input2, JLabel input3) {
    input.setVisible(false);
    input2.setVisible(false);
    input3.setVisible(false);
}

【问题讨论】:

  • 仅通过接口和/或继承。但是,对于给定的语法,这是不可能的。
  • 好的,非常感谢!
  • 我理解这个问题的方式,似乎您需要将方法指定为private void siv(JComponent input),因为JButtonJTextFieldJLabel 都继承了该类的setVisible 方法

标签: java methods parameters parameter-passing


【解决方案1】:

JButtonJTextFieldJLabel 继承自 JComponent,后者具有 setVisible 方法,因此您可以拥有一个采用 JComponent 数组并设置其可见性的方法。

 public void setVisibility(boolean visibility, JComponent... components) {
   for(JComponent component: components){ 
     component.setVisible(visibility);
   }
 }

【讨论】:

  • 非常感谢!这太棒了!
  • 在@sleiman-jneidi 的回答的基础上,如果你想要一个方法只接受你提到的三个类,你必须重载那个方法——基本上写三个 具有相同名称的方法,每个方法都采用正确类型的参数。然后,您可以一式三份编写代码本身或委托给采用 JComponent 的私有方法。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 2014-09-21
  • 2016-09-23
  • 2012-04-12
  • 2012-05-28
  • 1970-01-01
  • 2016-01-25
相关资源
最近更新 更多