小编Ste*_*eve的帖子

JavaScript的"新"关键字是否被视为有害(第2部分)?

通过以下问题阅读,我觉得大多数答案都忽略了为什么有些人(Crockford)选择不使用"新"关键字.这不是为了防止在没有"new"关键字的情况下意外调用函数.

根据Crockford关于原型继承的以下文章,他实现了一种对象创建技术,该技术更清楚地展示了JS的原型性质.现在甚至在JS 1.8.5中实现了这种技术.

他反对使用新的论点可以更清楚地概括为:

"这种间接性旨在使语言对经过专业训练的程序员来说更加熟悉,但却没有做到这一点,正如我们从Java程序员对JavaScript的非常低级的看法中看到的那样.JavaScript的构造函数模式并不适合经典人群.也模糊了JavaScript真正的原型性质.因此,很少有程序员知道如何有效地使用这种语言."

我并不一定认为"新"有害,但我确实认为它"掩盖了JavaScript真正的原型性质",因此我在这一点上必须同意Crockford.

您对使用"更清晰"的原型对象创建技术,而不是使用"new"关键字有什么看法?

javascript

12
推荐指数
2
解决办法
2061
查看次数

Scala Array [String]到Java Collection [String]

我有一个Scala数组字符串:

val names:Array[String] = something.map(...)
Run Code Online (Sandbox Code Playgroud)

我需要调用一个接受Collection 的Android(java)方法

public void addAll (Collection<? extends T> collection)
Run Code Online (Sandbox Code Playgroud)

如何将数组转换为集合?

scala

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

Android Wear特定通知

WearableNotifications.Builder setLocalOnly方法可用于仅在手机上显示通知,并且它不是镜像到Wear装置.

有没有办法做相反的事情,所以创建一个只会在Wear设备上显示的通知?

android android-notifications wear-os

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

AWS Fargate Cluster Scaling

我不清楚底层的AWS Fargate集群是如何运作的.

当任务需要更多实例时,底层群集是否仍然根据需要向上和向下扩展,如果是,那么指定的位置是什么?

amazon-web-services aws-fargate

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

Enum工厂式的方法

在我的应用程序中,可以生成几个不同的报告(CSV,HTML等).

我没有创建传统的工厂式方法模式,而是计划在枚举常量体中添加一个方法,该方法将创建并返回相应的报表对象.

public enum ReportType {
 CSV {
  @Override
  public Report create() {
   return new CSVReport();
  }
 },
 HTML {
  @Override
  public Report create() {
   return new HTMLReport();
  }
 };

 public abstract Report create();
}
Run Code Online (Sandbox Code Playgroud)

使用指定的ReportType枚举常量,我可以通过执行如下语句轻松创建新报表:

ReportType.CSV.create()
Run Code Online (Sandbox Code Playgroud)

我希望得到其他人对使用这种方法的看法.你觉得这怎么样?你更喜欢其他任何方法,如果有的话,为什么?

谢谢

java enums factory

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

Android链动画

我试图将两个动画"链接"在一起,所以当一个完成时,另一个开始.这是有效的,除了一个问题.第一个动画完成后,它会移回原来的位置.我设置填充后为真.我还缺少什么?

这是我正在使用的代码.请注意,这是在扩展LinearLayout的类中.

// FIRST ANIMATION
mAnimation = new TranslateAnimation(0, PANEL_END_X, 0, 0);
mAnimation.setDuration(PANEL_TRANSITION_TIME);
mAnimation.setFillAfter(true);

mAnimation.setAnimationListener(new Animation.AnimationListener() {
    public void onAnimationEnd(Animation animation) {

        // FIRST ANIMATION COMPLETE, CALL THE SECOND ANIMATION
        startAnimation(mAlphaAnimation);
    }
});

// SECOND ANIMATION     
mAlphaAnimation = new AlphaAnimation(1.0f, 0.0f);
mAlphaAnimation.setDuration(PANEL_ALPHA_TRANSITION_TIME);
mAlphaAnimation.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)

解:

我能让这个让我满意的唯一方法是使用一个AnimationSet,但设置第二个动画的起始偏移量来开始第一个动画的偏移+持续时间,加上一点填充.在我的情况下,它们不一定非常精确.

我尝试使用CommonsWare建议的各种值,但我总是得到某种类型的"捕捉"效果,其中值在恢复之前会恢复到原始值.

android

11
推荐指数
2
解决办法
9356
查看次数

Android Proguard重复定义

我正在尝试将第三方库(JmDNS)添加到我的Android项目中.

我在基础项目目录下创建了一个文件夹'libs',并将jar文件放在目录中.

当我尝试使用Ant(ant release)构建项目时,我收到了一个'重复定义'的注意事项,看起来是JmDNS jar文件中的每个类.

....
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Canceler]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.DNSStateTask]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Prober]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Renewer]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.package-info]
[proguard] Note: duplicate definition of library class [javax.jmdns.package-info]
[proguard] Note: there were 357 duplicate class definitions.
Run Code Online (Sandbox Code Playgroud)

构建也失败,出现以下错误:

BUILD FAILED
/path/Tools/ant-android-scala/build-scala.xml:183: Can't write [/path/bin/projectname-debug-shrinked.jar] (Can't read [/path/projectname/libs/jmdns.jar(;;;;!META-INF/MANIFEST.MF,!library.properties)] (Duplicate zip entry [jmdns.jar:javax/jmdns/JmDNS$Delegate.class]))
Run Code Online (Sandbox Code Playgroud)

我已经确保jar文件只包含一次,并且没有其他方法可以在项目的任何位置包含重复的源文件.

为什么Proguard会抱怨重复的定义呢?

android proguard

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

JQuery - 扩展和访问超类

有没有办法在使用$ .extend扩展对象时访问超级对象?

我想扩展一个对象,覆盖一个方法,但在子类方法中调用重写的超类方法.

javascript jquery

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

关闭的Groovy概念

我对Groovy 文档中使用的术语"闭包"感到困惑.根据文档,他们对闭包的定义看起来更像是匿名函数或lambda.

我理解支持第一类函数的语言通常允许形成闭包.但是,这两个概念之间存在差异.

例如,根据Groovy文档:

Groovy中的闭包是一个匿名的代码块,可以接受参数,返回值,引用和使用在其周围范围内声明的变量.

在函数式语言中,这样的匿名代码块通常可以称为匿名lambda表达式,或者带有未绑定变量的lambda表达式,或者如果它不包含对未绑定变量的引用(如前面示例中的阈值),则称为闭合lambda表达式.Groovy没有这样的区别.

然后根据关闭的Wikipedia页面:

术语闭包通常被错误地用于表示匿名函数.

我错过了什么?

groovy closures

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

多个咖啡因LoadingCaches添加到Spring CaffeineCacheManager

我想在LoadingCacheSpring 上添加几个不同的CacheManager,但我不知道如何使用它CaffeineCacheManager.似乎只有一个加载器可以刷新内容,但是我需要为每个缓存单独加载.是否可以向Spring缓存管理器添加多个加载缓存?如果是这样,那怎么样?

CaffeineCacheManager cacheManage = new CaffeineCacheManager();

LoadingCache<String, Optional<Edition>> loadingCache1 = 
            Caffeine.newBuilder()
            .maximumSize(150)
            .refreshAfterWrite(5, TimeUnit.MINUTES)
            .build(test -> this.testRepo.find(test));

LoadingCache<String, Optional<Edition>> loadingCache2 = 
            Caffeine.newBuilder()
            .maximumSize(150)
            .refreshAfterWrite(5, TimeUnit.MINUTES)
            .build(test2 -> this.testRepo.find2(test2));

// How do I add to cache manager, and specify a name?
Run Code Online (Sandbox Code Playgroud)

spring spring-cache caffeine

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