我在Java中有一个基本问题,但这是OOP中的一个普遍问题.为什么接口允许设置字段?这不是一个接口应该做的事情吗?
我理解它的方式,界面是英语中的形容词.因此,如果我的类实现了Runnable和Serializable接口,那么我确保用户我的类将满足条件为Runnable和Seriablizable.但是,这意味着接口是"无状态的",但允许它们在Java中有字段...
我错过了什么吗?
我发现的问题与这个问题非常相似,只是台式机上的Safari似乎已经解决了这个问题.基本上,问题是:当客户端浏览移动版Safari并且页面在pagea.html上执行javascript函数时,然后导航到pageb.html,然后按后退按钮返回pagea.html,javascript函数当客户端按下后退按钮返回pagea.html时,将不会运行.它将跳过javascript调用.
我已经尝试过上面链接中提到的解决方案,但似乎没有什么适用于移动Safari.还有其他人遇到过这个bug吗?你是怎么处理的呢?
在Eclipse中编写Java时,我可以键入syso
并按下control + space来自动完成此操作并获取System.out.println();
.我想知道Eclipse中是否有某些设置允许我设置此表单的其他快捷方式.(例如,我想输入syscur
并自动完成此操作System.currentTimeMillis();
.)
在Java中,如何创建在构造时填充的最终Set?我想做类似以下的事情:
static final Set<Integer> NECESSARY_PERMISSIONS
= new HashSet<Integer>([1,2,3,6]);
Run Code Online (Sandbox Code Playgroud)
但我不知道Java中的正确语法.
我想实现一个不区分大小写的哈希映射.这个问题本身并不新鲜,但我想增加额外的功能,不知道要采取什么样的方向.我希望客户能够做到这样的事情:
boolean preserve_case = true;
Map<String, MyClass> maplet = new CaseInsensitiveHashMap<MyClass>(preserve_case); // If the client enters true at construction, then the put, get, and remove methods should still be case insensitive, but the entry and key sets should preserve the case that the client used when calling put.
maplet.put("FoO", my_class);
MyClass bar = maplet.get("foo"); // Should return a reference to my_class
Set<Entry<String, MyClass>> case_sensitive_set = maplet.entrySet(); // Since the client input true to preserve order, this entry set should be …
Run Code Online (Sandbox Code Playgroud) 我是一个网络开发者(游戏开发作为一种爱好),我看到自己多次使用以下范例.(两者都在开发服务器架构和视频游戏开发工作.)它看起来真的很难看,但我不知道一个解决方案.我将在游戏开发中给出一个例子,因为它是我最近注意到它的地方.这是我一直在研究的角色扮演游戏.每次发动战斗时,CombatEngine都会创建两个战斗员派对.每个战斗者都设置一个与给定战斗者相关联的ArtificialIntelligence对象,该战斗员负责为没有接收到明确命令的玩家指挥移动:
public class Combatant {
ArtificialIntelligence ai = null;
public Combatant()
{
// Set other fields here.
this.ai = new ArtificialIntelligence(this);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我不喜欢的内容:内部场(ArtificialIntelligence)在施工期间使用一个作战者,因为它需要一些作战场以指示适当的动作.因此,为了方便起见,我保留了对作为一个arg传递给ArtificialIntelligence对象的战斗员的引用,但该对象包含对ai对象本身的引用!它创建了这种奇怪的递归,但我不知道如何解决它.AI对象需要大量特定于战斗员的字段,所以这就是我传入整个对象的原因,但我不喜欢该对象如何包含对上覆战斗员中包含的ai字段的引用字段,包含在上覆的ai类中.这是不好的做法,还是我只是在思考它?
我正在运行一个服务器,有时必须搜索客户端查询的内容.我想将客户端查询写入磁盘以获取记录,但我不想放慢搜索速度.(搜索已经成为瓶颈......)
因此,当客户端执行搜索时,我让客户端的线程向单个线程发送消息,该线程将处理磁盘写入,而客户端线程继续处理客户端的请求.这样,磁盘上的文件不会遇到同步问题,并且不会减慢客户端体验.
我在这里有一个概念性问题:在这种情况下单身是否合适?在我最近的编程中,我一直在使用单例设计模式,我想确保我将它用于其预期用途.
任何反馈都非常感谢.
这似乎是一个愚蠢的问题,但我想知道创建抽象方法时的"最佳实践".他们的知名度应该公开还是受到保护
即使实现抽象方法的子类是公共的,是否仍然建议保持抽象方法受到保护?
绝对基本的Java问题,我很难在Google上找到它.以下是什么意思:
(7 & 8) == 0?
Run Code Online (Sandbox Code Playgroud)
这相当于写作:
7 == 0 || 8 == 0?
Run Code Online (Sandbox Code Playgroud)
我写了一个快速主要测试这个,似乎是这种情况.我只是想确保我没有遗漏任何东西.
grep具有使用该-r
选项递归搜索的能力.但是,我想知道grep是否能够递归搜索指定数量的子文件夹级别的查询字符串.例如,我有一个root
包含文件夹的文件夹parent1, parent2, ..., parentN
.每个父文件夹都有正常的文本文件和文件夹child1, child2, ..., childM
.我想从根级别运行grep并搜索父级内的文件,而不查看子文件夹.有一个简单的方法吗?