标签: language-specifications

我在哪里可以获得Java 8语言规范?

Oracle网站上提供了Java 7规范,但我无法在任何地方找到Java 8规范,尽管互联网上提供了Java 8测试版的下载.

你有一个想法:它已经写好了,它可以在哪里下载?如果规范不可用,可能是另一个可以作为(或接近)规范的文件?

java language-specifications java-8

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

为什么C#为`using`定义了两种不同的用途?

更多的问题出于好奇而不是任何事情,但为什么C#为关键字定义了两个不同的"目的" using?一方面,它是一个指令......

用于为命名空间创建别名或导入在其他命名空间中定义的类型.

另一方面,这是一个......

定义一个范围,在该范围之外将放置一个或多个对象.

对我而言,对于相同的关键字似乎有不同的用途,但也许我错过了一些东西.这个关键字有两个不同的用途吗?或者,这两个目的,在编译器的腹部深处,真的是一样的东西?

c# using language-specifications

23
推荐指数
2
解决办法
896
查看次数

为什么添加".map(a - > a)"允许这个编译?

这与我对"流减少不兼容类型"的回答有关.我不知道为什么我的建议有用,而霍尔格正确地向我施压.但即使他似乎也没有清楚解释它为何起作用.那么,让我们问它自己的问题:

以下代码无法编译javac(对于下面的ideone链接,这是sun-jdk-1.8.0_51根据http://ideone.com/faq):

public <T> Object with(Stream<Predicate<? super T>> predicates) {
  return predicates.reduce(Predicate::or);
}
Run Code Online (Sandbox Code Playgroud)

这是正确的:或者将这个流中的两个谓词组合在一起就像写:

Predicate<? super T> a = null;
Predicate<? super T> b = null;
a.or(b);  // Compiler error!
Run Code Online (Sandbox Code Playgroud)

但是,它确实在intellij中编译,尽管在Predicate::or方法引用上有原始类型警告.显然,它也会在eclipse中编译(根据原始问题).

但是这段代码确实:

public <T> Object with(Stream<Predicate<? super T>> predicates) {
  return predicates.map(a -> a).reduce(Predicate::or);
                // ^----------^ Added
}
Run Code Online (Sandbox Code Playgroud)

Ideone demo

尽管我想要尝试这个,但我并不完全清楚为什么这会起作用.我的手工波形解释是,.map(a -> a)行为类似于"强制转换",并为类型推断算法提供了更多的灵活性来选择允许reduce应用的类型.但我不确定那种类型到底是什么.

请注意,这不等于使用.map(Function.identity()),因为它被约束为返回输入类型.ideone demo

任何人都可以解释为什么这可以参考语言规范,或者如Holger建议的那样,它是一个编译器错误?


更详细一点:

该方法的返回类型可以更具体一些; 我在上面省略了它,以便返回类型上令人讨厌的泛型不会妨碍:

public <T> …
Run Code Online (Sandbox Code Playgroud)

java generics language-specifications java-8

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

如何在C#中实现foreach?

究竟是如何foreach在C#中实现的?

我想它的一部分看起来像:

var enumerator = TInput.GetEnumerator();
while(enumerator.MoveNext())
{
  // do some stuff here
}
Run Code Online (Sandbox Code Playgroud)

但是我不确定究竟发生了什么.enumerator.Current每个周期使用什么方法返回?它是为[每个循环]返回还是需要匿名函数或其他东西才能执行foreach

c# foreach language-implementation language-specifications

22
推荐指数
2
解决办法
8753
查看次数

什么是HTML5 <command>标签以及什么是浏览器支持

我已经阅读了HTML5规范<command>,发现这个元素的信息非常模糊.

我已经尝试过,发现它不能在Chrome(最新版本)工作,它正在使用Safari(甚至是较旧版本),抱歉没有FF(请不要拍我) - Mac只测试.

我无法理解这个元素的用途是什么,即使我正确使用它.

我提前感谢您对此有任何澄清!

html tags html5 specifications language-specifications

21
推荐指数
3
解决办法
1万
查看次数

XSD不允许我在所有指标内部无限制

我试图使var1中的无序变量列表出现两次,var2出现无限次(我的项目中的用例不同).该元素不允许我使用maxOccurs.

我正在尝试做什么工作?

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="testcomment">
    <xs:complexType>
      <xs:all>
        <xs:element name="var1" type="xs:string" maxOccurs="2" />
        <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

xsd language-specifications

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

++ i C#和C++中的运算符差异

我有以下用C++和C#编写的代码

 int i=0;
 ++i = 11;
Run Code Online (Sandbox Code Playgroud)

在此C#编译器带来错误之后

The left-hand side of an assignment must be a variable, property or indexer
Run Code Online (Sandbox Code Playgroud)

但C++编译器生成此代码没有错误,我得到了11值的结果i.这种差异的原因是什么?

c# c++ int increment language-specifications

14
推荐指数
3
解决办法
1074
查看次数

为什么Java中不允许用Foo(Object [])重载Foo(Object ...)?

我想知道为什么它是Java不允许超负荷Foo(Object[] args)使用Foo(Object... args),虽然他们都以不同的方式使用?

Foo(Object[] args){}
Run Code Online (Sandbox Code Playgroud)

使用如下:

Foo(new Object[]{new Object(), new Object()});
Run Code Online (Sandbox Code Playgroud)

而另一种形式:

Foo(Object... args){}
Run Code Online (Sandbox Code Playgroud)

使用如下:

Foo(new Object(), new Object());
Run Code Online (Sandbox Code Playgroud)

这背后有什么理由吗?

java parameters methods arguments language-specifications

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

C#规范(团队?委员会?)是否曾考虑过这种对象创建语法?

我从来没有公布这种性质的问题之前,因此,如果它是不恰当的,只需不伤害我的感情太糟糕了,我会删除它.

为了尽可能保持我所关心的一切尽可能接近左边距,我一直希望能写出如下内容:

DataService1.DataEntities dataEntities = new(constructorArg1, ...)
Run Code Online (Sandbox Code Playgroud)

我认为另一个原因是我喜欢通过使用var获得的额外屏幕空间,当类型已经出现在作业的右侧时,但我的大脑有太多年来在左侧寻找类型.再说一遍,被困在我的方式并不是一个很好的理由,希望有一个规范......

c# syntax language-design language-specifications

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

当简单名称和完全限定名称冲突时如何引用类

考虑以下病理示例:

class Ideone {
  static class ArrayList<T> {
    ArrayList() {
      System.out.println("!!");
    }
  }

  static class java {
    static class util {
      static class ArrayList<T> {
        ArrayList() {
          System.out.println("Here");
        }
      }
    }
  }

  public static void main(String[] args) {
    new ArrayList<>();
    new java.util.ArrayList<>();
    // Can I refer to the "usual" java.util.ArrayList?
  }
}
Run Code Online (Sandbox Code Playgroud)

在构造函数中创建的两个实例是嵌套类.

但是我怎么能java.util.ArrayList在同一个班级中提到我们都知道和喜欢的东西呢?我们无法导入它,并且我们不能使用完全限定名称,因为将使用嵌套类符号.

在这种情况下我们能做些什么?(除了明显的 - 停止使用嵌套类的这些肆无忌惮的邪恶名称).

java language-specifications

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