我观察到外类可以访问内部类私有实例变量.这怎么可能?以下是演示相同内容的示例代码:
class ABC{
class XYZ{
private int x=10;
}
public static void main(String... args){
ABC.XYZ xx = new ABC().new XYZ();
System.out.println("Hello :: "+xx.x); ///Why is this allowed??
}
}
Run Code Online (Sandbox Code Playgroud)
为什么允许这种行为?
我自己写了一个实用程序来将列表分成给定大小的批次.我只是想知道是否已经有任何apache commons util.
public static <T> List<List<T>> getBatches(List<T> collection,int batchSize){
int i = 0;
List<List<T>> batches = new ArrayList<List<T>>();
while(i<collection.size()){
int nextInc = Math.min(collection.size()-i,batchSize);
List<T> batch = collection.subList(i,i+nextInc);
batches.add(batch);
i = i + nextInc;
}
return batches;
}
Run Code Online (Sandbox Code Playgroud)
如果已有相同的实用程序,请告诉我.
我一直在玩静态方法的修饰符,并遇到了一个奇怪的行为.
我们知道,静态方法不能被覆盖,因为它们与类而不是实例相关联.
所以,如果我有下面的代码片段,它编译得很好
//Snippet 1 - Compiles fine
public class A {
static void ts() {
}
}
class B extends A {
static void ts() {
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在A类中将final修饰符包含到静态方法中,则编译失败 ,B中的ts()不能覆盖A中的ts(); 重写方法是静态最终的.
当静态方法根本无法被覆盖时,为什么会发生这种情况?
假设我有三个A,B和C类.
都有public void foo()定义的方法.
现在从C的foo()方法我想调用A的foo()方法(不是它的父B的方法,而是超级超类A的方法).
我试过super.super.foo();,但这是无效的语法.我怎样才能做到这一点?
我想编写一个接受绑定变量(例如:NUM)的SQL查询,其输出包含一列&:NUM行数,每行包含行号.即如果我们传递:NUM为7,则输出应为:
VAL
====
1
2
3
4
5
6
7
Run Code Online (Sandbox Code Playgroud)
查询中不应该有任何实际的DB表,也不应该使用PL/SQL代码.即在查询中只应使用dual
有没有办法实现这个目标?
我知道线程用于多任务处理并且它们重量轻.但我怀疑的是,我说我需要一个没有任何多任务的过程.我刚刚创建了一个流程.现在CPU会将单个线程关联到进程,还是单独执行进程而不需要线程?
请澄清.
问候,哈里什
在C中,我们知道数据类型(例如int)的大小可能因编译器/硬件而异.
但是为什么数据类型的大小在java语言中是不变的?为什么我们不具备java中不同数据类型大小的灵活性,具体取决于编译器?
在评估各种ESB时,我遇到了Apache Synapse和WSO2.在WSO2中,提到WSO2完全使用Synapse并在其基础上构建.
但是我还不清楚WSO2在Synapse上提供了哪些附加功能?(除了商业支持).
我可以看到的一个区别是用于管理代理定义,序列创建等的Web UI.WSO2是否还提供了其他功能而不是Synapse?如果在Synpase和WSO2之间有任何指导可供选择,请分享
我只是想确定为什么要通过Synapse去WSO2.
谢谢,哈里什
我计划将事件存储在弹性搜索中.它可以在任何时间点拥有大约1亿个事件.为了重复删除事件,我计划通过连接以下字段来创建长度为100个字符的_id列entity_id - UUID(37个字符)+ event_creation_time(30个字符)+ event_type(30个字符)
此商店将具有正常的读取和写入以及聚合查询(无更新/删除)如果使用此类冗长的字符串_id列而不是默认ID,是否会对性能产生任何影响或任何其他副作用,请告诉我.
谢谢,哈里什
我有一段代码,希望用Java UUID(UUID.randomUUID())填充响应对象的一个属性.
如何从外部对此代码进行单元测试以检查此行为?我不知道将在其中生成的UUID.
需要测试的示例代码:
// To test whether x attribute was set using an UUID
// instead of hardcode value in the response
class A {
String x;
String y;
}
// Method to test
public A doSomething() {
// Does something
A a = new A();
a.setX( UUID.randomUUID());
return a;
}
Run Code Online (Sandbox Code Playgroud)