可能重复:
C#中的枚举类型约束
是否可以enum通过使用其包装类将类型用作通用参数Enum?
我有不同的枚举:
enum errors1 { E1, E3, E8 };
enum errors2 { E0, E2, E9 };
enum errors3 { E7, E4, E5 };
Run Code Online (Sandbox Code Playgroud)
通过以下类声明,我认为我可以实现它:
public class MyErrors<T> where T : Enum
{
T enumeration;
public T getEnumeration()
{
return enumeration;
}
static void Main(string[] args)
{
Program<error1> p = new Program<error1>();
p.getEnumeration().E1 // this call does NOT work
}
Run Code Online (Sandbox Code Playgroud)
但是,由于一般类型是Enum我只能访问类的成员和方法Enum.那么我可以按照我的意图实现它,或者我应该使用其他方法吗?
在我自己的剖析器上工作,我想解释一下我所看到的.即使在最简单的程序中,也会出现一些默认线程:
虽然他们的名字非常自我记录,但我希望获得更多信息.似乎这些线程没有记录,有人知道挖掘这些信息的来源,甚至知道这些线程到底做了什么吗?
这个问题不是关于,虚假的唤醒是否真的很开心,因为这已经在这里全面讨论过:虚假的唤醒真的发生了吗?因此,这也不是为什么我必须围绕我的wait声明循环.这是关于:
我想构建一个虚假唤醒发生的案例.到目前为止我在上面提到的问题中学到的是:
如果发出一个Linux进程的信号,它的等待线程将各自享受一个不错的,热的虚假唤醒.
所以看来这只能用于linux机器,实际上我有Ubuntu 11.04 - 64位.我编写了一个Java程序,其中一个线程正在等待一个条件,但没有循环和另一个类,线程只是等待并被另一个线程通知.我认为在一个JVM中启动所有三个线程会强制执行上述情况,但似乎并非如此.
有没有其他人知道如何在Java中构建这样的案例?
来自Java背景,对我来说,处理创建类的选择或者只是实现我可能需要的函数是新的.通常,在建模可能具有状态的东西时,这是毫无疑问的.
现在我正在实现一个没有main函数和静态成员函数的共享库.是否有些东西反对创建一个类来封装函数?
此外,我想在另一个文件中封装更多代码,尤其是辅助功能.执行代码总是相同的,并且它的状态不会改变,所以我想我会声明它们也是静态的 - 所以这里出现了同样的问题.
自从我写一个分析器注重并发方面,我要寻找使用好的人造例如同步机制中的Java.我的探查器可以看到与线程相关的一些操作; 例如:
所以我正在寻找的是一个Java程序,乍一看似乎是理解的,但在执行它时,你开始怀疑结果.我希望我的探查器可能能够检测到后台发生了什么.
为了澄清自己,我举一个例子,Brian Goetz撰写的Java Concurrency in Practice一书给出了"有毒"代码示例,这些示例用于学习原因.
@NotThreadSafe
public class ListHelper<E> {
public List<E> list =
Collections.synchronizedList(new ArrayList<E>());
...
public synchronized boolean putIfAbsent(E x) {
boolean absent = !list.contains(x);
if (absent)
list.add(x);
return absent;
}
}
Run Code Online (Sandbox Code Playgroud)
这是通过该方法的线程安全类的扩展putIfAbsent.由于list是同步的,但putIfAbsent使用另一个锁来保护状态,就像列表中定义的方法一样.
分析器可以显示使用过的监视器锁和用户的惊讶(或者不是......),用户会看到有两个可能的监视器锁而不是一个.
我不太喜欢这个例子,但我不会问,如果我已经有很多好的例子了.
我发现我的问题类似于:你在Java中遇到的最常见的并发问题是什么?和Java并发错误模式.
但他们只提到破坏的并发程序.我也在寻找线程安全的实现,但仍然不明显它们是线程安全的.
当我第一次阅读Web标准课程中不引人注目的JavaScript原理时,我认为这是一件非常棒的事情.
不引人注目的JavaScript更像是一种编程哲学,而不是一种技术.到目前为止,它最重要的组件是清楚地了解哪个功能属于哪个层.所有绝对关键的网站功能都应该用纯HTML编码,但是一旦你创建了这个基础,就可以在基础之上添加一个JavaScript层,以便为支持它的浏览器提供更好,更清晰,更快速的界面.
此外,不引人注目的JavaScript:
分离结构和行为,以使您的代码更清晰,脚本维护更容易
抢占浏览器不兼容性
使用干净的语义HTML层
对于我目前的项目,我使用这种方法.当我把JavaScript关闭以进行其他一些我必须做的工作时,我很惊讶有多少网站在没有JavaScript的情况下完全被破坏:缺少功能,以及缺少很多重要信息,这些信息根本不存在DOM.
这些特别是社交网站.这种情况应该不足为奇,所需的开发时间和用户体验可能比可访问性更重要.
我仍在问自己,不引人注目的JavaScript是不是已经过时了.我的意思是哪个浏览器本身不支持JavaScript?它仍然是适合2012年的方法吗?我开始怀疑它.
在API级别11之前,可以使用以下service程序设置剪贴板的内容adb shell:
service call SERVICE CODE [i32 INT | s16 STR] ...
Options:
i32: Write the integer INT into the send parcel.
s16: Write the UTF-16 string STR into the send parcel.
Run Code Online (Sandbox Code Playgroud)
有三个整数代码来定义方法:
1 TRANSACTION_getClipboardText
2 TRANSACTION_setClipboardText
3 TRANSACTION_hasClipboardText
Run Code Online (Sandbox Code Playgroud)
例如这个命令
$ adb shell service call clipboard 2 i32 1 i32 1 s16 "Hello Android!"
Run Code Online (Sandbox Code Playgroud)
将剪贴板的内容设置为"Hello Android!".从API级别11开始,不推荐使用列出的方法,新的方法将ClipData作为参数.你如何通过现在设置剪贴板内容adb shell?
在我的Windows机器上使用com.sun.tools.attach API时,在拨打电话时出现以下错误
VirtualMachine.list()
Run Code Online (Sandbox Code Playgroud)
java.lang.UnsatisfiedLinkError:java.library.path中没有附加
原因是缺少attach.dll.attach.dll位于$JRE/bin/.启动我的Java程序时,-Djava.library.path=[Directory to the attach.dll]一切都没有错误输出.
现在,我不想添加每个Java程序启动这个丑陋的JVM参数.因此我的问题是:
我的机器配置不正确,$JRE/bin/应该在库路径中吗?
如果没有,我该如何动态添加路径?System.setProperties("java.library.path",StringOfThePathToTheAttach.dll);没有成功.库路径已更改,但无论如何都会出现错误.这与SecurityManager或JVM的启动有关吗?
我找不到更改构建文件输出的可能性.我发现唯一停用整个生成的makefile进程,我不想这样做.
我想以有意义的方式使用Swing将MVC设计应用于我的Java应用程序.因此我的问题是,如何在Java Swing中构建控制器?
我有两个选择:
这两种可能吗?这是一个偏好问题,还是明确界定?