小编Vol*_*ort的帖子

关于Java子类继承返回"this"的方法

Car一个公共方法的类

public Car myself() {
  return this;
}
Run Code Online (Sandbox Code Playgroud)

有一个子类Ferrari,以及一个foo包含Ferrari对象的变量.

最后,

Ferrari bar = foo.myself();
Run Code Online (Sandbox Code Playgroud)

这会警告你,因为该方法myself()返回一个Car对象,而不是预期的对象Ferrari.

注意:我知道这个例子很愚蠢,因为你只是这么做bar = foo.这只是一个例子.


解决方案:

  • 覆盖myself()方法Ferrari.
  • 在分配时将Car对象强制转换为Ferrari对象bar.

两种解决方案都有效,我对此感到满意.但是,当你有几个子类时,第一个是不可取的Car.我觉得一遍又一遍地覆盖一种方法会破坏继承它的意义.接下来,关于第二种解决方案,铸造并不漂亮.感觉很愚蠢 - 如果我的变量是类型的Ferrari,那么Java是否应该能够在没有警告我的情况下隐式地转换它?毕竟,Java必须知道返回的对象可以被转换为Ferrari,不是吗?


还有另一种解决方法吗?只是出于好奇 - 我可以忍受铸造的东西,告诉Java应该是什么东西......

java methods inheritance subclassing

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

对于cocos2d-iphone 1.0.1,旋转操作在iPhone 5S和iPad Air中不起作用

运用 cocos2d-1.0.1

    [sprite runAction:[CCRotateBy actionWithDuration:10.0 angle:360]];
Run Code Online (Sandbox Code Playgroud)

你的精灵很好地旋转.适用于所有设备和iOS版本.

...除了iPhone 5S和iPad Air.如果你执行上面的代码,旋转是超级毛刺.

我在这些设备中看到的唯一共同点是它们有一些新的处理器.

我该怎么办?Rotate这些设备上的任何操作都搞砸了.

cocos2d-iphone ios

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

在JavaFX中查找节点的子列表中的特定节点

    Button A = new Button();
    Button B = new Button();
    Button C = new Button();

    somePane.getChildren().add(A,B,C);
Run Code Online (Sandbox Code Playgroud)

现在,让我们走向遥远的未来.我有一个参考somePane,我有兴趣访问按钮B.

从技术上讲,人们可以做类似的事情

    somePane.getChildren().get(1); // returns the second button
Run Code Online (Sandbox Code Playgroud)

但是,我对此并不满意,因为它似乎容易出错.

在我看来,拥有某种标签系统会非常有用.像这样:

    Button A = new Button();
    Button B = new Button();
    Button C = new Button();

    A.tag = "A";
    B.tag = "B";
    C.tag = "C";

    somePane.getChildren().add(A,B,C);
Run Code Online (Sandbox Code Playgroud)

然后你可以做到

    somePane.getChildren().getByTag("B");  // returns the second button
Run Code Online (Sandbox Code Playgroud)

JavaFX有这样的东西吗?


你可能想知道:

  • 为什么我不把这个按钮B变成我班级的固定属性?
    • 这些按钮和窗格是动态创建的.我可以有几个窗格,都有自己的"B"按钮.
  • 为什么我不对子类ButtonNode类进行子类化并添加此功能?
    • 有道理,我可以做到.我宁愿有一个更简单的解决方案.

java javafx

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

PHP mysqli_fetch_array应该得到一个布尔值

$result = mysqli_query($conn,"SELECT * FROM Players");
if ($result !== FALSE) {
    while($row = mysqli_fetch_array($result)) {
        $result = mysqli_query($conn,"UPDATE Players SET Score='$score' WHERE ID='$id'");
    }
}
Run Code Online (Sandbox Code Playgroud)

有效.也就是说,数据库确实更新了,一切都很酷.

但它会发出警告:

警告:mysqli_fetch_array()期望参数1为mysqli_result,给定布尔值

如果你四处搜索,解释是查询失败 - 因此,它返回FALSE,所以你得到警告.

......但这在我的案例中没有意义.查询没有失败.当我运行这个脚本时,我的数据库就更新了.此外,使用之前还有一个条件检查结果是否为布尔值mysqli_fetch_array,所以从技术上讲,这个警告应该永远不会发生.

无论如何,问题必须与之相关$result.让我们做:

echo gettype($result);
Run Code Online (Sandbox Code Playgroud)

结果如何

"宾语"

那么,这就解释了为什么它会通过这个条件.但是,这仍然无法解释为什么mysqli_fetch_array坚持这是一个布尔值(因为它不是).

那有什么问题呢?

使用PHP Version 5.3.24和5.4.19进行测试.

php

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

Groovy 中的 ArrayList 如何保存不同类型的值?

a = [1, "Hello", 3.5]

println a.getClass()
Run Code Online (Sandbox Code Playgroud)

产量

class java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)

但不是ArrayList只能持有一种价值吗?我如何ArrayList保存一个整数、一个字符串和一个浮点数?

java groovy arraylist

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

如何使用HTMLUnit代理服务器?

我正在使用HTMLUnit并且想使用代理服务器.我对此并不太了解,但我的印象是http://proxylist.hidemyass.com/上列出的其中一台服务器可以使用.

这是我的代码:

public class App {

    public static void main(String[] args) throws Exception {
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_31, "61.234.249.126", 8118);

        HtmlPage page       = webClient.getPage("http://www.google.com");
        webClient.close();

        System.out.println(page.asText());
    }

}
Run Code Online (Sandbox Code Playgroud)

从这样的列表中随机选择了IP和端口 - 就像我和其他几个一样.

但它最终说它超时了.我想并不是所有的代理服务器都能正常工作,但我已经用十几个地址完成了这个,所以我开始怀疑它是我的代码而不是服务器本身的问题.

我这样做了吗?

java proxy htmlunit

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

获取 PHP openssl_encrypt 方法/模式列表

我开始使用 PHP 的openssl_encrypt方法。第二个参数是加密模式。我在哪里可以找到所有可能的方法/模式的列表?

php encryption php-openssl

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

我可以从iCloud容器中的生产环境中删除记录类型吗?

我对iCloud很新 - 我制作了一个容器,然后在其中创建了一个Record Type.然后部署到生产.

好吧,我不再需要这种记录类型了,所以我试着删除它.

Invalid attempt to delete a record type which is active in a production container.
Run Code Online (Sandbox Code Playgroud)

好吧,似乎我不能从Production中删除它.

也许如果我在开发环境中使用红色重置按钮,它会让我清除生产中的数据?

will be revert to the version in the production environment
Run Code Online (Sandbox Code Playgroud)

这不会对我有所帮助 - 我该怎么做呢?当然有一种方法可以消除记录类型而不创建一个全新的容器?

icloud cloudkit

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

Visual Basic:迭代文件夹的文件

我想迭代Visual Basic中的文件夹中的文件.我想检查每个文件的名称.我听说过Dir功能或其他什么,但我不太确定如何使用它..

vb.net recursion file-io

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

定义"我的变量将是什么"是一种好习惯吗?

所以我有这个:

Dim aBoolean As Boolean = True
Run Code Online (Sandbox Code Playgroud)

这样做会有什么不同吗?

Dim aBoolean = True
Run Code Online (Sandbox Code Playgroud)

在其他语言中,我认为为性能或其他东西定义变量的类型是一个好习惯.我对VB.NET并不完全确定.

谢谢.

vb.net variables types

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