Syntax
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
NewExpression :
MemberExpression
new NewExpression
CallExpression :
MemberExpression Arguments
CallExpression Arguments
CallExpression [ Expression ]
CallExpression . IdentifierName
Arguments :
( )
( ArgumentList )
ArgumentList :
AssignmentExpression
ArgumentList , AssignmentExpression
LeftHandSideExpression :
NewExpression
CallExpression
Run Code Online (Sandbox Code Playgroud)
主要表达式如下
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
Run Code Online (Sandbox Code Playgroud)
第一个问题是:
( Expression )在PrimaryExpression辩护中是什么意思?
该{prop: …
关于声明区域:
每个名称都在程序文本的某些部分中引入,称为声明性区域,这是该名称有效的程序的最大部分.
关于范围:
通常,每个特定名称仅在称为其范围的程序文本的一些可能不连续的部分内有效.
它们之间有什么区别?
请考虑以下代码:
#include <iostream>
int a=5;//1
extern int a;//2
int main(){ cout << a; }
Run Code Online (Sandbox Code Playgroud)
在非限定名称查找声明期间,将找到#1,并且在找到#1之后,非限定名称查找结束.
但考虑另一个例子:
#include <iostream>
void foo() { cout << "zero arg"; }
void foo(int a) { cout << "one arg"; }
int main(){ foo(4); }
Run Code Online (Sandbox Code Playgroud)
在那种情况下,void foo();首先会找到定义.但是不合格的名称查找并没有结束.为什么?标准中指定了哪里?一般来说,我对以下内容感兴趣:
何时为函数调用的postfix-expression结束非限定名称查找?
注意:我知道ADL是什么意思.在这种情况下,ADL生成的声明集是空的.
UPD:
但是如果我们写下以下内容:
int foo(int a) { return 0; }
namespace A
{
int foo() { return 1; }
int a= foo(5); //Error: to many arguments
}
Run Code Online (Sandbox Code Playgroud)
这意味着封闭命名空间不考虑.我想知道它在哪里指定.
我怀疑方法局部变量仅在方法执行时才存在.此外,GC Eden或Long-generation块溢出时触发(轻微/主要GC)等......所以,如果在方法体的末尾Eden没有溢出,那么就不需要触发GC.尽管没有触发主要/次要GC,我们将销毁所有局部变量.怎么做?
我正在使用PostgreSQL 8.4.我有一个表的列,my_tbl其中包含日期(timestamp without timezone).例如:
date
-------------------
2014-05-27 12:03:20
2014-10-30 01:20:03
2013-10-19 16:34:34
2013-07-10 15:24:26
2013-06-24 18:15:06
2012-07-14 07:09:14
2012-05-13 04:46:18
2013-01-04 21:31:10
2013-03-26 10:17:02
Run Code Online (Sandbox Code Playgroud)
如何编写以下格式返回所有日期的SQL查询:
xxxx-xx-xx 23:59:59
Run Code Online (Sandbox Code Playgroud)
这个日期将设置为当天结束.
JLS 8.1.3为我们提供了关于未在内部类中声明但在类中使用的变量的规则.
使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final或者是有效的final(§4.12.4),否则在尝试使用时会发生编译时错误.
一个例子:
class A{
void baz(){
int i = 0;
class Bar{ int j = i; }
}
public static void main(String[] args){
}
}
Run Code Online (Sandbox Code Playgroud)
为什么编译代码?我们在内部类中使用了非final的局部变量,该变量在那里没有声明.
我正在使用最新的cygwin 1.7.34(0.285/5/3)完整版.我遇到的问题是没有execinfo.h,所以编译器打印有关文件缺失的错误消息.我该如何解决这个问题?有人已经遇到过这个问题吗?
我有两个独立的实体:
public enum Rule implements Validatable, StringRepresentable{
//...
}
Run Code Online (Sandbox Code Playgroud)
和
public inteface Filter extends Validatable, StringRepresentable{
//...
}
Run Code Online (Sandbox Code Playgroud)
哪里
public inteface Validatable{
public GenericValidator getValidator();
}
Run Code Online (Sandbox Code Playgroud)
和
public interface StringRepresentable{
public String getStringRepresentation();
}
Run Code Online (Sandbox Code Playgroud)
GenericValidator是一个抽象类,有许多我不希望用户直接访问的子类.我该如何更好地处理这些事情?
我不明白何时创建类似的更好
public class ValidatorFactory{
public Validator getRuleValidator(Rule r){ ... }
public Validator getFilterValidator(Filter f){ ... }
}
Run Code Online (Sandbox Code Playgroud)
而不是Validatable如前所示实现接口.
难道没有人解释我怎样才能做出正确的决定?什么潜在的情况需要执行FactoryMethod一个错误的决定,什么时候真的很好?
UPD:
public interface Validator{
public ErrorCode validate();
}
public abstract class GenericValidator implements Validator{
//...
}
Run Code Online (Sandbox Code Playgroud)
本ErrorCode类封装了验证的结果(null如果valiadtion的succsfully完成).
我正在阅读J. Bloch的有效Java,现在我正在关于避免返回nulls,但返回空集合的部分.这是该部分的代码示例:
// The right way to return a copy of a collection
public List<Cheese> getCheeseList() {
if (cheesesInStock.isEmpty())
return Collections.emptyList(); // Always returns same list
else
return new ArrayList<Cheese>(cheesesInStock);
}
Run Code Online (Sandbox Code Playgroud)
我真的无法理解只返回cheesesInStockif 有什么问题cheesesInStock.isEmpty().为什么返回预定义更好Collections.emptyList().如果我们返回,我们可能遇到什么样的麻烦cheesesInStock.