我想在CodeIgniter中创建一个类的几个实例.我已经将我的类创建为库,但无法弄清楚用于创建多个实例的语法.
我正在创建一个客户端 - 服务器应用程序,用户可以从gui打开或关闭服务器; 为了让它工作,我使用SwingWorker嵌套类.所有似乎都正常工作,但当我关闭服务器并重新打开它不起作用,可能是因为还有另一个打开的实例无法覆盖:服务器在accept()上被阻止方法.当用户按下开关按钮时,我想杀死前一个实例,但我不知道如何.
这是给我带来问题的SwingWorker类:
class SwingWorkGUI extends SwingWorker
{
@Override
protected Integer doInBackground() throws Exception {
int delay = 1000;
final Timer time = new Timer(delay, null);
time.addActionListener( new java.awt.event.ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (Server.up == true){
upTimeMillis += 1000;
long diff = upTimeMillis/1000;
long numHrs = diff/60;
diff = diff%60;
long numMins = diff/60;
long numSecs = diff%60;
upTime.setText(numHrs + ":" + numMins + ":" + numSecs);
}
else {
upTime.setText("Server Actually Down");
time.stop(); …Run Code Online (Sandbox Code Playgroud) 我是Haskell初学者,有一个奇怪的问题.到目前为止,一切都很顺利,我已经能够正常使用Prelude读取功能.现在突然我必须不断声明它的类型才能使用它.
我总是要声明这个或类似的东西才能使用它.
let r = read::String-> Int
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新启动ghci,因为我不小心重载了读取,但每当我尝试正常使用它时
read "456"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
No instance for (Read a0) arising from a use of `read'
The type variable `a0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Note: there are several potential instances:
instance Read () -- Defined in `GHC.Read'
instance (Read a, Read b) => Read (a, b) -- Defined in `GHC.Read'
instance (Read a, Read b, Read c) => Read (a, b, c)
-- Defined in …Run Code Online (Sandbox Code Playgroud) 我已经使用PHP很多年了,但有一部分我从未真正了解过,并且最近一直在想.
当我执行以下操作时:
var_dump(new test());
var_dump(new test());
var_dump(new test());
var_dump(new test());
Run Code Online (Sandbox Code Playgroud)
我明白了:
object(test)[1]
object(test)[1]
object(test)[1]
object(test)[1]
Run Code Online (Sandbox Code Playgroud)
所有这些对象都具有相同的编号.我得知系统没有将实例分配给变量,因此它几乎立即被破坏.但是当我做以下事情时:
var_dump($a = new test());
var_dump($a = new test());
var_dump($a = new test());
var_dump($a = new test());
var_dump($a = new test());
var_dump($a = new test());
Run Code Online (Sandbox Code Playgroud)
我明白了:
object(test)[1]
object(test)[2]
object(test)[1]
object(test)[2]
object(test)[1]
object(test)[2]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,第一个是1,然后第二个是2,但是它循环而不是坚持2.
我猜测应用第一个实例的变量会被第二个调用中的新实例覆盖(从而破坏它),但是为什么第三个调用会在分配之前破坏第二个实例(将实例增量返回到1) ?
我在我的ColdFusion开发人员版本上创建了一个多实例设置.我在Maverics上运行.我对这个过程的指南是Rob Brooks-Bilson的这篇文章.
我做的一切都很对.但是,当我尝试ping ColdFusion Administrator时,我收到"Bad Gateway Error".
我偶然注意到,在Python 2.7和3.5中,从大型数据文件生成类的简单程序运行速度要快得多.我在这里读到,使用"无限精度"整数归咎于简单枚举的减速,但即使我尝试实例化这个类的简单测试,我发现Python 3明显变慢:
class Benchmark(object):
def __init__(self):
self.members = ['a', 'b', 'c', 'd']
def test():
test = Benchmark()
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
Run Code Online (Sandbox Code Playgroud)
我想也许这与每个类实例的大小有关,但Python 3实例小于2(56对64)
$python3 benchmarks.py
0.7017288669958361
$python benchmarks.py
0.508942842484
Run Code Online (Sandbox Code Playgroud)
我已尝试过很多关于这个主题的变体,包括在不同的机器上使用3.4,并且仍然得到相同的结果.有什么想法发生了什么?
我仍然可以在C ++中找到自己的方式,并且遇到了问题。我有一个包含另一个类(不能从其继承)的实例成员的类,其中包括回调。我想将此回调注册到父类,但遇到困难。
经过一番挖掘之后,我了解了方法!=函数,因为一个实例方法隐式地希望它本身有一个实例(我可以描述它的最佳方式!),这std::bind是一个选择,但是当签名为时我无法使它起作用。不<void(void)>。
我还阅读了有关实现为接口的方法,类似于委托(我来自Swift背景),这也很有吸引力。
这是我要达到的目标的准系统版本:
class ChildClass
{
public:
std::function<int(int)> callback;
};
class MainClass
{
public:
ChildClass childClass;
MainClass()
{
this->childClass.callback = this->square;
}
private:
int square(int i)
{
return i * i;
}
};
Run Code Online (Sandbox Code Playgroud)
我知道类型不匹配会导致错误,但是我不知道如何使它们一起玩。
我有一份家长表格。当我单击按钮时,模式子窗体会出现在窗体中,并且位于父窗体的中心:

但问题出在任务栏中,该应用程序有 2 个实例:

如何防止第二个实例或将其从任务栏隐藏?谢谢 !
我正在尝试用 Java 创建一个类数组。不是对象,而是类。目前,我有一个类 MyBaseClass,并从中扩展了三个类 MyClass1、MyClass2 和 MyClass3。我将这些类存储到静态数组中,如下所示:
private static MyBaseClass[] classes = {
new MyClass1(),
new MyClass2(),
new MyClass3()
};
public static MyBaseClass getInstanceOfClass(int index) {
return classes[index];
}
Run Code Online (Sandbox Code Playgroud)
然后我使用这样的方法:
try {
MyBaseClass obj = getInstanceOfClass(index).getClass().newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否可以以更简单的方式做到这一点。如果我可以创建一个类数组,我也许能够逃避 getInstanceOfClass() 方法和一些可能的异常。我尝试这样做:
private static Class<MyBaseClass>[] classes = {
MyClass1.class,
MyClass2.class,
MyClass3.class
};
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误“不兼容的类型”,因为 MyClass1 不等于 MyBaseClass。有趣的是,这似乎有效:
private static Class<?>[] classes = {
new MyClass1().getClass(),
new MyClass2().getClass(),
new MyClass3().getClass()
};
Run Code Online (Sandbox Code Playgroud)
但这个想法很可怕,它甚至被我的调试器标记了。那么,还有更好的方法吗?
编辑:
这有效:
private static …Run Code Online (Sandbox Code Playgroud) 创建类的实例时,如果给出了错误的参数。我怎么办?不创建一个新实例并返回引用,而是只返回一个“无”
这是我的应用程序:因为它有时被允许。我的应用程序是从整数列表构建树。我想在列表中使用 None 来表示一片叶子。所以我只想返回一个 None 而不是一个空的树节点。
instance ×10
class ×4
java ×2
python ×2
arrays ×1
c# ×1
c++ ×1
c++11 ×1
callback ×1
codeigniter ×1
coldfusion ×1
function ×1
gateway ×1
ghci ×1
haskell ×1
hide ×1
instances ×1
kill ×1
modal-dialog ×1
object ×1
overloading ×1
php ×1
python-3.x ×1