如何在下面的代码中使用setter?
public class SignalRunnable implements Runnable {
private final int x;
private short[] s;
public SignalRunnable(int _x) {
this.x = _x;
}
public void setS(short[] _s) {
this.s = _s;
}
@Override
public void run() {
// DO STUFF here
}
}
我已经尝试了下面的方法来使用我的类,但得到了一个无法解决的方法错误。
// Create the runnable/task to repeat.
Runnable runnable = new SignalRunnable(x);
// Cannot resolve method error here.
runnable.setS(s);
您应该记住Liskov替换原则规定的一个非常重要的设计原则:
API(即可访问的,通常称为public
),可在引用变量上使用,由变量的类型决定和投影,而不是由实际对象的类型决定和投影,变量存储引用。变量的类型是它声明的任何内容,而不是它引用的内容。
在以下情况下:
SuperType obj = new SubType();
obj只允许您访问在超类型中声明的成员(包括从其超类型隐式或显式继承的任何内容)。
变量的类型为可运行:
Runnable runnable = ...
并且,Runnable
没有名为集的方法。这是您的SignalRunnable类上的自定义方法。将您的变量设置为该类型:
SignalRunnable runnable = new SignalRunnable(x);
runnable.setS(s);
您仍然可以将SignalRunnable
实例添加到Runnable
的集合中,将其传递给期望Runnable
的方法等。
我有一个使用lombok的类,如上所示,其中每个字段都是私有的和最终的。现在,我希望为设置一个setter,但这个setter不起作用,因为是final。我在这儿该怎么办?
问题内容: 我想使两个按钮看起来像按钮。只有当我使用actionlink的#ID来应用时,我才能实现此目的。我想为操作链接分配一个类,但是当我使用下面的代码时,出现一个错误,提示我缺少“}”。 这是我正在应用的样式: 这可行,我想我可以将另一个#ID添加到样式中,但想将样式应用于Class。 问题答案: 您必须使用字符,因为class是C#中的关键字。这是MSDN文档的链接
有这样的东西: 工作正常/图像正常上载comment.php。 下面是相同的表单,但使用了jquery Post。工作正常,但javascript看不到图像... 有什么方法可以在脚本中添加一些我的comment.php会看到的图像吗?
我在Google BigQuery中有一个表,它由几个字段组成,然后是一个可能包含一个或多个对象的重复记录。我想在重复数据中创建一个新表,其中包含一个额外字段,并将原始数据复制到新表中,用GENERATE_UUID()的输出填充新字段,以便每个重复数据行都有一个唯一标识符。 我有一个类似的问题,当目标包含重复字段时,如何从一个BigQuery表复制到另一个?但我不知道如何调整它以适应我当前的用例。
问题内容: 我有一个特定的类C的arraylist。 C类具有两个属性,即。 现在,当我将C类型的对象添加到ArrayList myList时,我想检查列表中是否已经存在对象,且其str1和str2的值与该对象的参数值(str1和str2)相匹配我要补充。 有什么有效的方法可以执行此操作,而不必每次都遍历完整列表并检查参数之间是否匹配? 问题答案: 您需要重写C类中的方法。 例如 然后,可以调用m
我在做一件简单的事情,想不出该怎么做。我有一个使用方法的ArrayList,我想立即将结果添加到一个新的ArrayList中。 所以我想做类似的操作,但这不是正确的方法。 对我的代码的任何其他部分的PS建议也会很感激。谢谢!