我正在使用设置插件,我正在努力存储一些布尔值.现在我想添加管理DateTime对象.我在Settings.cs中添加了以下内容:
private const string TimeRemainingKey = "time_remaining";
private static readonly DateTime TimeRemainingDefault = DateTime.Now;
public static DateTime TimeRemaining
{
get
{
return AppSettings.GetValueOrDefault(TimeRemainingKey, TimeRemainingDefault);
}
set
{
AppSettings.AddOrUpdateValue(TimeRemainingKey, value);
}
}
Run Code Online (Sandbox Code Playgroud)
最初我在我的代码中使用了以下内容:
Settings.TimeRemaining = new DateTime().AddMinutes(30);
Run Code Online (Sandbox Code Playgroud)
当我添加一些日志记录时,我有这个:
DateTime dt = new DateTime();
Debug.WriteLine(dt.ToString());
dt = dt.AddMinutes(30);
Debug.WriteLine(dt.ToString());
Settings.TimeRemaining = dt;
Debug.WriteLine(Settings.TimeRemaining.ToString());
Run Code Online (Sandbox Code Playgroud)
打印出来:
1/1/0001 12:00:00 AM
1/1/0001 12:30:00 AM
1/1/0001 12:00:00 AM
为什么会出现这种情况?
我正在尝试根据AST(抽象语法树)重写在构建期间重命名Java接口中的方法和Kotlin接口中的函数.对于这个问题,我们忽略了重命名方法/函数给调用带来的影响.要找到要重命名的方法/函数,我正在使用自定义注释和注释处理器.我按照这些说明操作Java接口.
我用三个模块创建了一个新项目.app模块,注释模块和注释处理器模块.
该应用模块是一个Android应用程序,并包含与一个注释的方法/函数每两个独立的Java和科特林接口文件.
RenameJava.java
package nl.peperzaken.renametest;
import nl.peperzaken.renameannotation.Rename;
public interface RenameJava {
@Rename
void methodToRename();
}
Run Code Online (Sandbox Code Playgroud)
RenameKotlin.kt
package nl.peperzaken.renametest
import nl.peperzaken.renameannotation.Rename
interface RenameKotlin {
@Rename
fun functionToRename()
}
Run Code Online (Sandbox Code Playgroud)
注释模块是一个只包含@Rename注释的Java库,我们指定只在函数上允许它,我们说它只能在源代码中可见.
Rename.kt
package nl.peperzaken.renameannotation
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.SOURCE)
annotation class Rename
Run Code Online (Sandbox Code Playgroud)
注释处理器模块是一个Java库,它只包含迭代具有注释的元素并对其进行转换的处理器.
RenameProcessor.kt
package nl.peperzaken.renameprocessor
import com.google.auto.service.AutoService
import com.sun.source.util.Trees
import com.sun.tools.javac.processing.JavacProcessingEnvironment
import com.sun.tools.javac.tree.JCTree
import com.sun.tools.javac.tree.TreeTranslator
import com.sun.tools.javac.util.Names
import nl.peperzaken.renameannotation.Rename
import javax.annotation.processing.*
import javax.lang.model.SourceVersion
import javax.lang.model.element.TypeElement
import javax.tools.Diagnostic
@AutoService(Processor::class)
@SupportedSourceVersion(SourceVersion.RELEASE_8)
@SupportedAnnotationTypes("nl.peperzaken.renameannotation.Rename")
class RenameProcessor : AbstractProcessor() {
private lateinit var trees: Trees
private lateinit …Run Code Online (Sandbox Code Playgroud) 我不想压制警告.还有另一种处理此警告的方法吗?
"Iterator类型的表达式需要未经检查的转换以符合Iterator"
Iterator<String> it = schemaJSON.getJSONObject("body").keys();
Run Code Online (Sandbox Code Playgroud) 我目前正在研究一个项目,碰巧我必须颠倒一个字节的顺序.我目前正在使用AVR Studio Mega32微控制器.
例如:
0000 0001 becomes 1000 0000
0001 0110 becomes 0110 1000
1101 1001 becomes 1001 1011
Run Code Online (Sandbox Code Playgroud)
首先,我有这个:
ldi r20,0b00010110
Run Code Online (Sandbox Code Playgroud)
反转字节的最简单方法是什么,使r20变为01101000?
我试图找出Akka支持的消息传递.我得出以下结论:
最多一次:默认支持
至少一次:支持Akka Persistence
恰好一次:?
Akka是否支持一次?如果没有,我怎么能实现这个目标呢?
我有一个名为 Data 的自定义类,其中包含所有数据。主要活动创建两个片段。我在主要活动中有一个字段,如下所示:
private Data data = new Data();
Run Code Online (Sandbox Code Playgroud)
这些片段是用这个方法创建的:
private ArrayList<Fragment> getFragments() {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new fragment_one());
fragments.add(new fragment_two());
return fragments;
}
Run Code Online (Sandbox Code Playgroud)
我需要将数据字段传递给片段,以便片段可以访问数据的方法。
我尝试创建一个包,但我无法传递自定义类。我能做什么?
将LinkedHashMap的键添加到ArrayList的最简单方法是什么?我想通过删除循环来提高性能.有更有效的方法吗?
for(String key : map.keySet()){
array.add(key);
}
Run Code Online (Sandbox Code Playgroud) 假设我有两个可以作为参数传递的字符串:
String one = "one";
String two = "two";
Run Code Online (Sandbox Code Playgroud)
以下哪种方法效果最好?
private void exampleOne(String example){
if(example.equals("one"){
// do this
}else{
// do this
}
}
private void exampleTwo(String example){
if(example.equals("one"){
//do this
}else if(example.equals("two"){
// do this
}
}
private void exampleThree(String example){
if(example.equals("one"){
// do this
}
if(example.equals("two"){
// do this
}
}
Run Code Online (Sandbox Code Playgroud) 在以下示例中,当枚举已经是uint时,为什么必须转换为uint?也做: uint,甚至改变什么?如果我删除它,我会得到相同的错误.args.Progress是一个uint.
switch (args.Progress)
{
case (uint) Values.value1: // works
break;
case Values.value2: // error
break;
}
public enum Values : uint
{
value1,
value2
};
Run Code Online (Sandbox Code Playgroud)