小编The*_*kis的帖子

为什么我们在Java中使用自动装箱和拆箱?

自动装箱是Java编译器在基元类型和相应的对象包装类之间进行的自动转换.例如,将int转换为Integer,将double转换为Double,依此类推.如果转换是另一种方式,则称为拆箱.

那么为什么我们需要它呢?为什么我们在Java中使用自动装箱和拆箱?

java autoboxing

72
推荐指数
2
解决办法
6万
查看次数

为什么声明main作为数组编译?

在CodeGolf上看到了一段代码,它的目的是作为编译器炸弹,其中main声明为一个巨大的数组.我试过以下(非炸弹)版本:

int main[1] = { 0 };
Run Code Online (Sandbox Code Playgroud)

它似乎在Clang下编译得很好,并且在GCC下只有一个警告:

警告:'main'通常是一个函数[-Wmain]

结果二进制文件当然是垃圾.

但为什么它会编译呢?是否允许C规范?我认为相关的部分说:

5.1.2.2.1程序启动

程序启动时调用的函数名为main.该实现声明此函数没有原型.它应定义为返回类型为int且没有参数[...]或具有两个参数[...]或以某种其他实现定义的方式.

"其他一些实现定义的方式"是否包含全局数组?(在我看来,规范仍然指的是一个函数.)

如果没有,它是编译器扩展吗?或者工具链的一个功能,它可以用于其他目的,他们决定通过前端提供它?

c gcc program-entry-point clang

56
推荐指数
4
解决办法
8999
查看次数

通用方法存储在哪里?

我在.ΝΕΤ上读过一些关于泛型的信息,并注意到一件有趣的事情.

例如,如果我有一个泛型类:

class Foo<T> 
{ 
    public static int Counter; 
}

Console.WriteLine(++Foo<int>.Counter); //1
Console.WriteLine(++Foo<string>.Counter); //1
Run Code Online (Sandbox Code Playgroud)

两类Foo<int>,并Foo<string>在运行时不同.但是具有泛型方法的非泛型类呢?

class Foo 
{
    public void Bar<T>()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

很明显,只有一个Foo班级.但是方法Bar怎么样?所有泛型类和方法都在运行时使用它们使用的参数关闭.这是否意味着类Foo有许多实现,Bar并且有关此方法的信息存储在内存中?

.net c# generics

55
推荐指数
3
解决办法
2783
查看次数

为什么List.remove(int)抛出java.lang.UnsupportedOperationException?

我试图从a中删除元素List并获取java.lang.UnsupportedOperationException.

    public <T extends Object> void findDuplicates(
        String title, Multimap<T, ChunkId> map) {
        for (T key : map.keySet()) {
            Collection<ChunkId> ids = map.get(key);
            List<ChunkId> idList = (Arrays.asList(ids.toArray(new ChunkId[0])));
            removeUsedIds(idList);
            Collections.sort(idList);
//...
        }
    }

    private void removeUsedIds(List<ChunkId> idList) {
        // decrement counter to avoid indexing changed parts of list
        for (int i = idList.size() - 1; i >= 0; i--) {
            if (usedIdSet.contains(idList.get(i))) {
                idList.remove(i);   // **** Exception thrown here
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我明白了

Exception in thread …
Run Code Online (Sandbox Code Playgroud)

java

28
推荐指数
3
解决办法
4万
查看次数

可以obj.GetType().IsInterface是真的吗?

在做一些几乎完全无关紧要的事情时,一个问题突然出现在我脑海中:

obj.GetType().IsInterface在仅由C#代码组成的代码库中,表单的表达式是否真实?

我怀疑答案是否定的,因为:

  • GetType() 将始终返回运行时类型.
  • 具体类型的运行时类型与调用的构造函数匹配.因此,它永远不是一个接口,因为接口没有构造函数.
  • 匿名类型无法实现接口(如果他们这样做,他们仍然有他们的匿名类类型).
  • 实现公共接口的其他程序集的内部类的实例仍将该类作为运行时类型.
  • 使用[ComImport, CoClass(typeof(MyClass))]一个接口上使它看起来像您可以实例,但构造函数调用实际实例引用的类.

我想不出任何其他情况.我错过了什么,或者我猜对了吗?

c# reflection

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

为什么Convert.ToInt32(Int32)存在?

有过载Convert.ToInt32的是采用Int32作为参数.但即使文档说基本没有任何反应,该方法返回其输入.

问题是为什么我们有这样的超负荷?有什么目的吗?谁能给我一个使用这种方法的例子?

我的想法:我认为我们可能拥有它,因为有一个重载需要Object.因此我们想要消除拳击等.但我不确定.

.net c# base-class-library

25
推荐指数
2
解决办法
1045
查看次数

C宏:显然无用宏的优点/意图

我在C编程方面有一些经验,但我不敢称自己精通.最近,我遇到了以下宏:

#define CONST(x) (x)
Run Code Online (Sandbox Code Playgroud)

我发现它通常用于表达式,例如:

double x, y;
x = CONST(2.0)*y;
Run Code Online (Sandbox Code Playgroud)

完全被这个宏的观点困惑,我广泛研究了宏的优点/缺点和属性,但我仍然无法弄清楚这个宏的用途是什么.我错过了什么吗?

c macros

21
推荐指数
2
解决办法
947
查看次数

实例初始化器和构造函数之间有什么区别?

只是想知道编译代码的原因是这样的:

class MyClass extends AnotherClass {
  {
    MySecondClass object = new MySecondClass();
    object.doSomething();
  }
}
Run Code Online (Sandbox Code Playgroud)

这个代码和构造函数中的代码有什么区别?此代码对象创建之前执行.

java

20
推荐指数
2
解决办法
5255
查看次数

共享布局视图在ASP.NET MVC中是否有控制器?

共享布局视图可以有控制器吗?

我需要从Controller传递模型信息吗?

或者我在这里遗漏了什么?

asp.net-mvc

16
推荐指数
2
解决办法
3万
查看次数

java optimization nitpick:在投射之前调用instanceof进行检查是否更快投出一些东西并让它抛出异常?

在任何人说什么之前我只是出于好奇而问这个问题; 我不打算根据这个答案做任何过早的优化.

我的问题是关于使用反射和铸造的速度.标准的说法是"反思很慢".我的问题是哪个部分确实很慢,为什么; 特别是在比较某事物是否是另一个实例的父母时.

我非常有信心只是将对象的类与另一个Class对象进行比较的速度与任何比较一样快,大概只是直接比较已经存储在Object状态中的单例对象; 但如果一个班级是另一个班级的父母呢?

我通常认为instanceof它与普通班级检查一样快,但今天我想到了它,似乎有些反思必须在"幕后" instanceof才能发挥作用.我在网上查了一下,发现有人说的instanceof很慢; 大概是因为比较物体的父母所需的反射?

这导致了下一个问题,如何只是铸造.如果我把某事物作为一个物体,那我就得不到了ClassCastException.但是如果将对象转换为自身的父对象,则不会发生这种情况.基本上我正在做一个instanceof电话,或逻辑到那个效果,当我在运行时进行演员表明我不是吗?我从来没有听到过任何人暗示过投射物体之前可能会很慢.不可否认,并非所有演员都是提供对象的父级,但很多演员都是父类.然而,从来没有人暗示这可能会很慢.

那是哪个呢.是instanceof真的没有那么慢?两者都instanceof投射到父类有点慢吗?或者有什么理由可以比instanceof电话更快地完成演员表?

java optimization casting instanceof

14
推荐指数
2
解决办法
3109
查看次数