小编ove*_*nge的帖子

如何从派生类访问内部类构造函数?

对于以下Ocean课程,

public class Ocean {

    /**
     * Define any variables associated with an Ocean object here. These
     * variables MUST be private.
     */
    // width of an Ocean
    private final int width;
    // height of an Ocean
    private final int height;

    class Critter {

        /**
         * Defines a location of a Critter in an Ocean.
         */
        Point location;

        public Critter(int x, int y) {
            location = new Point(x,y);
        }

        public Point getLocation() {
            return location;
        }
    }

    private …
Run Code Online (Sandbox Code Playgroud)

java constructor

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

查询java中的字段阴影

这个概念与a class和它的实例的概念相矛盾.

下面的程序对我来说很好,NullPointerException并按预期给出:

class SuperClass{
    int x = 2;
}

class SubClass extends SuperClass{
    int x = 4;
}

public class Dummy2 {

    public static void main(String[] args){
        SubClass obj1 = new SubClass();
        SuperClass obj2 = null;
        System.out.println(obj1.x);
        System.out.println(obj2.x);
    }

}
Run Code Online (Sandbox Code Playgroud)

但是当我SuperClass obj2 = obj1;奇怪地说 我看到SuperClass实例成员值的值时2,尽管class SuperClass在上面的程序中没有创建实例.

这是Java中的有效概念吗?

java

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

第9项:"覆盖等于"时始终覆盖hashCode()

关于下面提到的3份合同:

1)每当hashCode()在执行应用程序期间多次在同一对象上调用时,该hashCode方法必须始终返回相同的整数,前提是不修改在对象的等比较中使用的信息.从应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致.

从这个陈述中,我理解,在单个执行应用程序时,如果hashCode()在同一个对象上使用一次或多次,它应该返回相同的值.

2)如果两个对象根据equals(Object)方法相等,则hashCode()在两个对象中的每一个上调用方法必须产生相同的整数结果.

从这个陈述中,我理解,要在子类中执行相等操作(在宽范围内),至少有四种不同的相等程度.

(a)引用相等(==),比较两个引用类型对象的内部地址.

(b)浅层结构平等:如果所有字段均为==,则两个对象为"等于".{例如,两个SingleLinkedList"大小"字段相等且"头部"字段指向相同的字段SListNode.}

(c)深层结构平等:如果所有字段都是"等于",则两个对象"等于".{例如,两个SingleLinkedList代表相同序列的"项目"(尽管SListNodes可能不同).}

(d)逻辑平等.{两个例子:(a)如果两个"Set"对象包含相同的元素,则它们是"equals",即使基础列表以不同的顺序存储元素.(b)分数1/3和2/6是"等于",即使它们的分子和分母都不同.}

基于以上四类相等,第二个契约只能保持良好:如果(Say)equals()方法基于两个对象之间的logical_equality返回真值,那么hashCode()方法还必须在计算中考虑逻辑_equality,然后为每个新对象生成整数,而不是考虑内部地址一个新的对象.

但我在理解这第三份合同时遇到了问题.

3)根据equals(Object)方法,如果两个对象不相等,则不需要hashCode()在两个对象中的每一个上调用方法必须产生不同的整数结果.但是,程序员应该知道为不等对象生成不同的整数结果可能会提高哈希表的性能.

在第二个合同中,正如我们所说的那样hashCode()方法应该相应[例如:考虑生成整数之前的logical_equality]实现,我觉得,如果两个对象根据then 方法不相等可能会产生相同的整数结果,这是不正确的如第三份合同中所述?根据第二个合同中的参数,必须产生不同的整数结果.一个只是写在被打破第二份合同!equals(Object)hashCode()hashCode() return 42hashCode()

请帮我理解这一点!

java equals

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

JSON没有很好的错误

在下面的代码中,

<head>
        <meta charset="UTF-8">
        <title>JSON ex</title>
        <script type = "text/javascript" 
            src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
        </script>

        <script type="text/javascript" language = "javascript">
            var accountGrid = [];
            $(document).ready(function(){
                $.getJSON('result.json', function(entry){
                    accountGrid.push({
                        name: entry.name,
                        marketValue: entry.marketValue,
                        cash: entry.cash,
                        legend: entry.legend
                    }); 
                });
            });
        </script>
    </head>
    <body>

    </body>
Run Code Online (Sandbox Code Playgroud)

result.json

{
    'name': 'Account1',
    'marketValue': '10990',
    'cash': '199926',
    'legend': 'orange'
},
{
    'name': 'Account2',
    'marketValue': '156590',
    'cash': '133856',
    'legend': 'darkorange'
}
Run Code Online (Sandbox Code Playgroud)

我看到JSON not well formed错误.result.json坐在同一个文件夹中.

由于此错误,请为accountGrid空.

not well formed在执行时说错误是什么意思jQuery.getJSON

javascript jquery json

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

为什么Linker不抛出多个函数声明错误?

以下是三个文件,

/* HANDLERS.H */
#define TRUE 1
#define FALSE 0

/* Functions  declarations - included in both UI.C & tiffhandler.c */
int canHandle(char *);
int drawImage(char *);
int saveFile(char *);
Run Code Online (Sandbox Code Playgroud)
/* tiffhandler.c */
#include "HANDLERS.H"

int canHandle(char *fileName){
    return TRUE;
}

int drawImage(char *fileName){
    return TRUE;
}

int saveFile(char *fileName){
    return TRUE; 
}
Run Code Online (Sandbox Code Playgroud)
/* UI.C */
#include "HANDLERS.H"
int main(void){
}
Run Code Online (Sandbox Code Playgroud)

编译为,

> gcc HANDLERS.H tiffhandler.c UI.C

我的问题,

HANDLERS.H包含在UI.C&tiffhandler.c.因此,函数声明包含在两者中.

在链接阶段,在tiffhandler.o&UI.o链接之前,为什么链接器不会抱怨,通过说,每个函数的多个函数声明(比如说canHandle …

c linker function

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

GO - 隐式方法如何工作?

在GO中,我了解到,

1)

程序员只能将命名类型(X)或指针(*X)的方法定义为命名类型

2)

类型明确的方法定义X隐含定义了相同的方法类型*X反之亦然,所以,我的理解是,如果我宣布,

func (c Cat) foo(){
  //do stuff_
} 
Run Code Online (Sandbox Code Playgroud)

并宣布,

func (c *Cat) foo(){
  // do stuff_
}
Run Code Online (Sandbox Code Playgroud)

然后GO编译器给出,

Compile error: method re-declared

这表明,指针方法是隐式定义的,反之亦然


使用给定的命名类型(Cat),

type Cat struct{
  Name string
  Age int
  Children []Cat
  Mother *Cat
} 
Run Code Online (Sandbox Code Playgroud)

场景1

方法(foo)Cat由程序员在命名类型()上定义,

func (c Cat) foo(){
   // do stuff....
}
Run Code Online (Sandbox Code Playgroud)

通过GO编译器隐式地将foo指针*Cat类型的指针()定义为命名类型,看起来像,

func (c *Cat) foo(){
   // do stuff....
} …
Run Code Online (Sandbox Code Playgroud)

methods pointers go structural-typing

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

带函数指针的auto说明符 - C++

下面的代码有auto函数指针的参数(带说明符),

void g( bool(*fptr)(const auto) ){
  //
}

bool f(const int a){
  //
}
int main(int argc, char *argv[])
{
  g(&f); // Error
}
Run Code Online (Sandbox Code Playgroud)

工作良好.


有了这段代码,

bool k(const auto); // Compiler accepts declaration with auto specifier
auto h(auto& output, const auto& value) // Compiler accepts definition with auto specifier
{
   // output << value << "\n";
}
typedef bool(*fptr)(const auto); // Error 
void g( fptr f ){
  //
}

bool f(const int a){
  //
}
int main(int argc, …
Run Code Online (Sandbox Code Playgroud)

c++ c++14

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

EC2实例的私有IP

每当我创建一个新的亚马逊EC2实例(linux或windows)时,除了公共IP之外,还会分配给它的私有IP。

我们使用公共 IP 来访问该实例上的资源。tomcat等资源...

为该实例提供的私有 IP 的确切目的是什么?

linux ipv4 amazon-ec2 amazon-web-services aws-security-group

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

go vet - 我由 func 文字捕获的循环变量

在下面的代码中:

package main

import "fmt"

func main() {
    for i := 0; i <= 9; i++ {
        go func() {
            fmt.Println(i)
        }()
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

code$ 
code$ go install github.com/myhub/cs61a
code$ bin/cs61a 
code$ 
Run Code Online (Sandbox Code Playgroud)

以上程序不提供任何输出。

1)他们是否i在 10 个 go-routines 之间进行单一内存位置的数据竞争?

2)为什么上面的代码不打印自由变量的值i

concurrency loops go goroutine

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

使用指针索引 - 指针如何与切片一起工作?

在下面的main()代码中:

package main

import (
    "fmt"

    "github.com/myhub/cs61a/poetry"
)

func main() {

    p := poetry.NewPoem([][]string{
        {
            "And from my pillow, looking forth by light",
            "Of moon or favoring stars, I could behold",
            "The antechapel where the statue stood",
            "Of Newton, with his prism and silent face,",
            "The marble index of a mind forever",
            "Voyaging through strange seas of thought, alone.",
        },
        {
            "inducted into Greek and Christian",
            "modes of thinking, must take a longer way around.",
            "Like children born …
Run Code Online (Sandbox Code Playgroud)

pointers go slice

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