我已经读到使用@Override注释带来了许多好处,并且共识是你应该在每个被覆盖的方法上使用它.
@Override在构造函数中使用注释也被视为一种好的做法吗?
假设我编写了一个程序,它创建了很多String对象和intern()它们:
String someString = param1 + param2;
someString.intern();
Run Code Online (Sandbox Code Playgroud)
这对于一小组字符串来说很好,但是如果我尝试创建十亿个字符串String呢?(或者说亿亿亿?)据我所知,JVM 在PermGen区域为s 维护一个常量池,而PermGen没有得到GC -ed.String
因此,如果我String在循环中创建了过多的对象,但是我删除了对它们的引用,那么它们将得到GC -ed(我将用尽PermGen空间)吗?这些String都是独一无二的,没有任何重复.
我有这个问题,我无法弄清楚.我有这个练习:
完成以下通用Pair类,以便程序的执行给出指示的输出.不要改变主要.
class Pair ... { ... }
class GenericPairTest {
public static void main(String[] args) {
Pair<String,Integer> phoneNumber = new Pair<>("Bill's number", 1324);
System.out.println(phoneNumber);
Pair<Double,Double> point = new Pair<>(3.14, 2.32);
System.out.println(point);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
比尔的号码是1324
3.14 2.32`
我试过这样做:
import java.util.*;
class Pair <T,U> {
ArrayList<T,U> newList = new ArrayList<>();
Pair(T inT, U inU){
newList.add(inT,inU);
}
}
class GenericPairTest {
public static void main(String[] args) {
Pair<String,Integer> phoneNumber =
new Pair<>("Bill's number", 1324);
System.out.println(phoneNumber);
Pair<Double,Double> point =
new Pair<>(3.14, 2.32); …Run Code Online (Sandbox Code Playgroud) 我有以下表格:
(defn common [title & body]
(h/html5
[:body
[:div
]))
Run Code Online (Sandbox Code Playgroud)
问题是我]在打嗝模板的末尾有一个缺失,如果我按]emacs不添加缺失,]它只是表现得像我按下Ctrl + f.我知道这是因为paredit但我似乎无法找出如何添加缺失],这开始让我发疯.
当我使用带有paredit的emacs时,如何添加丢失的paren?
昨天我正在处理我的代码库,当我突然在IDEA日志中看到这个时,我正在对我的代码运行我的单元测试:
错误:Kotlin:[内部错误] java.lang.IllegalStateException:服务在org.jetbrains.kotlin.daemon.common.CompileService上死亡.$ CallResult $ Dying.get(CompileService.kt:60)at org.jetbrains.kotlin.daemon .common.CompileService $ CallResult $ Dying.get(CompileService.kt:59)org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemon(JpsKotlinCompilerRunner.kt:127)at org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner) .kt:100)org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner.kt:35)org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.kt:115)at org.jetbrains.kotlin.在org.jetbrains.kotlin.jps.build.KotlinBuilder.compileToJvm(KotlinBuilder.kt:740)的compilerRunner.JpsKotlinCompilerRunner.runK2JvmCompiler(JpsKotlinCompilerRunner.kt:65)org.jetbrains.kotlin.jps.build.KotlinBuilder.doCompileModuleChunk(Kotli)nBuilder.kt:458)org.jetbrains.kotlin.jps.build.KotlinBuilder.doBuild(KotlinBuilder.kt:264)org.jetbrains.kotlin.jps.build.KotlinBuilder.build(KotlinBuilder.kt:181)at org .jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1282)org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:956)org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder) .java:1028)org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:915)atg.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:741)org.jetbrains.jps. incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:387)org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:195)org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)在org.jetbrains.jp的org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:295)s.cmdline.BuildSession.run(BuildSession.java:125)位于org.jetbrains.jps.cmdline.BuildMain $ MyMessageHandler $ 1.run(BuildMain.java:238)org.jetbrains.jps.service.impl.SharedThreadPoolImpl $ 1.运行(SharedThreadPoolImpl.java:44)java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
这是四月愚人节从JetBrains开玩笑的吗?
我以前从未见过这个.killall java并且IDEA重新启动解决了问题,我无法重现这一点.这是有记录的东西(我没有在谷歌上发现任何点击)或只是编译Kotlin代码时IDEA的一次性故障?这个错误是什么意思?
请注意,我运行的单元测试是一个简单的探索性测试,我认为这与此无关:
internal fun fetchAsListWithSiblings(): List<Message<T>> {
val first = this
var currentMsg = first
val result = mutableListOf(currentMsg)
while(currentMsg.next.isPresent) {
val next = currentMsg.next.get()
currentMsg = next
result.add(next)
}
return result
}
@Test
fun shouldFetchSiblingsWhenFetchSiblingsIsCalledWithMultipleSiblings() {
val expected = listOf("foo", …Run Code Online (Sandbox Code Playgroud) 我想根据--debug交换机是否存在来修改我的应用程序的工作方式.我在我的@Configuration文件中试过这个:
@Value("\${debug}")
lateinit var debug: String
Run Code Online (Sandbox Code Playgroud)
但是春天说
无法在值"$ {debug}"中解析占位符'debug'
如何查询--debug选项的状态?
使用Conjunctions和Disjunctions时遇到问题.我的程序Criterion从ui 接收任意数量的过滤元素(每个过滤元素代表一个),并打算将它们链接在一起作为AND或OR.
所以例如我可以有3个这样的元素(我代表Criterion一个字母):
a OR b AND c
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
// ...
Criteria rootCriteria = createCriteria(entityClass);
Conjunction conjunction = Restrictions.conjunction();
Disjunction disjunction = Restrictions.disjunction();
boolean isFirst = true;
for (InternalFilterElement element : elements) {
if (isFirst) {
isFirst = false;
rootCriteria.add(createCriterion(element.getFilterRelation(), element.getValue()));
} else if (InternalFilterOperand.AND.equals(element.getInternalFilterOperand())) {
addCriterionToJunction(conjunction, element);
} else {
addCriterionToJunction(disjunction, element);
}
}
rootCriteria.add(disjunction);
rootCriteria.add(conjunction);
// ...
Run Code Online (Sandbox Code Playgroud)
我的问题是我总是得到a AND b AND c一些不必要的括号.
我真正想知道的是,我是否使用了错误的工具来完成这项任务?我该如何混合AND …
我写了以下java代码,我期望编译器会抱怨它.但我没有得到任何错误.为什么是这样 ?
public static void main(String[] args) {
Ba ba = new Ba();
ba.fetchSomeValues();
}
public String fetchSomeValues(){
return "Hello";
}
}
Run Code Online (Sandbox Code Playgroud)
我调用的方法fetchSomeValues()应该返回"Hello"(这是一个字符串),并且在main方法中我已经包含ba.fetchSomeValues();但没有将它初始化为String变量.编译器不抱怨为什么会这样?
我问这个问题是因为我很好奇.我不想实际遍历类的派生类.我知道我在这里介绍的方法很草率,这只是一个测试.
所以假设我有一个类(抽象与否):
public class SomeClass {
// snip....
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松编写一个方法来遍历类层次结构并找到一个Field例如:
private Field extractField(Class<?> type, String fieldName) {
Field ret = null;
try {
ret = type.getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {
Class<?> superclass = type.getSuperclass();
if (superclass == null) {
throw new IllegalArgumentException("Missing field detected.", e);
} else {
ret = extractField(superclass, fieldName);
}
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
现在我该怎么办如果我想Field在派生类中搜索一个type?我没有在java反射包中找到任何有用的东西.
我正在编写一个显示域模型列表的应用程序.默认行为是在a中显示这些模型ListView.我打算让用户在将这些数据看作列表或使用网格作为网格之间进行交换GridView.这样做的惯用方法是什么?
我的域模型是一个简单的pojo,我CustomArrayAdapter为它创建了一个自定义行布局,目前看起来像这样:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/label" >
</TextView>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="25dp"
android:layout_toRightOf="@+id/label"
android:text="@+id/text" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我希望在ArrayAdapter两种布局中使用相同的内容.
我的活动布局相当简单:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
tools:context=".MainActivity" >
<!-- what do I put here? -->
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) java ×8
kotlin ×2
android ×1
annotations ×1
arraylist ×1
clojure ×1
compilation ×1
constructor ×1
criteria-api ×1
emacs ×1
generics ×1
hibernate ×1
jvm ×1
memory ×1
paredit ×1
permgen ×1
reflection ×1
spring ×1
spring-boot ×1
string ×1