我正在浏览Predicate
Java 中使用的代码.我从来没用过Predicate
.有人可以指导我Predicate
在Java中的任何教程或概念解释及其实现吗?
有没有理由呢
Lists.transform()
Run Code Online (Sandbox Code Playgroud)
但不是
Lists.filter()
Run Code Online (Sandbox Code Playgroud)
?
如何正确过滤列表?我可以用
new ArrayList(Collection2.filter())
Run Code Online (Sandbox Code Playgroud)
当然,但是如果我理解正确,这种方式并不保证我的订单保持不变.
GWT的序列化程序java.io.Serializable
支持有限,但出于安全考虑,它支持的类型为白名单.我找到的文档,例如此FAQ条目表示您要序列化的任何类型"必须包含在序列化策略白名单中",并且列表是在编译时生成的,但不解释编译器如何决定什么在白名单上.
生成的列表包含许多属于标准库的类型,例如java.lang.String
和java.util.HashMap
.尝试序列化时出现错误java.sql.Date
,该错误实现了Serializable
接口,但不在白名单中.如何将此类型添加到列表中?
我的.emacs中有以下代码:
(if (null window-system)
(progn
(require 'color-theme)
(color-theme-initialize)
(color-theme-simple-1)))
Run Code Online (Sandbox Code Playgroud)
当我在控制台上打开Emacs时,我可以验证该progn
块是否运行(通过a (message "Got here.")
),并且我看到一个闪存,表明颜色主题已加载,但如果已加载,则会被其他内容覆盖.如果在加载后打开我的.emacs文件并使用上面提交的块C-x C-e
,它就可以了.我试过做:
(add-hook 'after-init-hook
(lambda ()
(progn
(require 'color-theme)
(color-theme-initialize)
(color-theme-simple-1))))
Run Code Online (Sandbox Code Playgroud)
但是行为是一样的.
可能与我使用Emacs 24相关,并且此代码不在我的.emacs中,而是在〜/ Dropbox/.emacs中,它是从我的.emacs加载的.
另外一个注意事项:我已经尝试过了M-x customize-themes
,但是这些都没有在控制台上可以接受.它们或者产生几乎不可读的光主题,或者大部分文本是不可见的.
在JUnit测试用例中,注释的字段@Rule
必须是公共的.它打破了常见的Java编码约定(所有类成员变量都不应该是公共的).为什么JUnit需要这个?
文档@Rule
:https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Rule.java
这是一个以前运行良好的项目,但是更新后出现以下错误。
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.retrofit_test"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
// implementation 'com.google.guava:guava:30.1.1-jre'
implementation 'com.google.guava:guava:30.1-jre'
// implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.5.30-M1'
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' …
Run Code Online (Sandbox Code Playgroud) 我有LocalDate
包含日期2012-12-28,我希望与本地的月名称(即十二月波兰)打印出来的所有格这在波兰是主格不同(grudnia和grudzień分别).因为我也想使用自定义格式,我创建了自己的DateTimeFormatter
使用DateTimeFormatterBuilder
(在Joda-Time中,AFAIK是正确的方式):
private static final DateTimeFormatter CUSTOM_DATE_FORMATTER
= new DateTimeFormatterBuilder()
.appendLiteral("z dnia ")
.appendDayOfMonth(1)
.appendLiteral(' ')
.appendText(new MonthNameGenitive()) // <--
.appendLiteral(' ')
.appendYear(4, 4)
.appendLiteral(" r.")
.toFormatter()
.withLocale(new Locale("pl", "PL")); // not used in this case apparently
Run Code Online (Sandbox Code Playgroud)
输出应为" z dnia 28 grudnia 2012 r. ".
我的问题是关于标有箭头的线:我应该如何实施MonthNameGenitive
?目前它扩展DateTimeFieldType
并且有很多代码:
final class MonthNameGenitive extends DateTimeFieldType {
private static final long serialVersionUID = 1L;
MonthNameGenitive() {
super("monthNameGenitive");
}
@Override
public …
Run Code Online (Sandbox Code Playgroud) 如果Python有一个类似于Lisp/Scheme的宏设施(比如MetaPython),你会如何使用它?
如果你是一个Lisp/Scheme程序员,你会使用什么样的宏(除了在Python中有明确的语法并行的东西,比如while循环)?
我想在文本框中输入小数点.我想通过在小数点后输入2位以上来限制用户.我已经在Keypress活动中编写了实现该代码的代码.
function validateFloatKeyPress(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
if (charCode == 46 && el.value.indexOf(".") !== -1) {
return false;
}
if (el.value.indexOf(".") !== -1)
{
var range = document.selection.createRange();
if (range.text != ""){
}
else
{
var number = el.value.split('.');
if (number.length == 2 && number[1].length > 1)
return false;
}
}
return true;
} …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个对话框,该对话框使用jquery的.load()函数以渲染的django形式进行slurp..load函数传递给"alert"对象的pk.在类函数中也可以使用self.request.user
这样的东西,所以我可以预先填充这些字段,如下面的消息模型(models.py)中所示:
class Message(models.Model):
user = models.ForeignKey(User)
alert = models.ForeignKey(Alert)
date = models.DateTimeField()
message = models.TextField()
Run Code Online (Sandbox Code Playgroud)
子类化django的CreateView使得使用ModelForm(views.py)的实例生成上下文非常容易:
class MessageDialogView(CreateView):
""" show html form fragment """
model = Message
template_name = "message.html"
def get_initial(self):
super(MessageDialogView, self).get_initial()
alert = Alert.objects.get(pk=self.request.POST.get("alert_id"))
user = self.request.user
self.initial = {"alert":alert.id, "user":user.id, "message":"test"}
return self.initial
def post(self, request, *args, **kwargs):
super(MessageDialogView, self).post(request, *args, **kwargs)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(form=form)
return self.render_to_response(context)
Run Code Online (Sandbox Code Playgroud)
这里的问题是self.initial
没有使用表单呈现.我已经确保表单确实在调用get_initial
,并且表单实例具有正确的初始数据post
,但是当表单在模板中呈现时,message.html
它不会像我期望的那样获取任何初始数据.是否有一个特殊的技巧让这个工作?我已经搜索了文档(似乎缺乏基于泛型的类视图的示例)和源代码,但我无法看到我所缺少的内容.