我的问题是关于泛型类和方法中使用的类型变量.
为什么我们不能做这样的事情T = new T();,换句话说,为什么我们不能构造一个类型变量的对象?
我知道在编译期间会删除通用信息,并且所有内容都会转换为
Object,那么编译器为什么不认为这T是一个对象并让我们构造它呢?
是否有任何聪明的方法来缩短这种淫秽行为?它有效,但它不可读......
int? myVal = r.IsDBNull(r.GetOrdinal("colName")) ? (int?)null : r.GetInt32(r.GetOrdinal("colName"));
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我正在寻找jQuery选择盒更换的建议.我以前在BrainFault上使用过那个(http://www.brainfault.com/jquery-plugins/jquery-selectbox-replacement/).
但是,从使用它和对它的一些研究,它是非常错误的,并不建议自己使用它.
任何建议赞赏!
是否有像join这样的函数将List的数据作为所有元素的字符串返回,由提供的分隔符连接?
List<String> join; ....
String join = list.join('+");
// join == "Elem 1+Elem 2";
Run Code Online (Sandbox Code Playgroud)
或者必须使用迭代器手动粘贴元素?
使用ConcurrentLinkedQueue时,如何限制队列的大小.是否有可能通过外部存储异常?
有没有一种可行的方法来在Java中加载任何类时运行我自己的代码,而不强制用户显式地并用自定义类加载器手动加载所有类?
无需过多细节,每当实现某个接口的类读取其注释将其与另一个类链接,并将该对赋予第三个类时.
编辑:哎呀,我会详细说明:我正在做一个事件处理库.我正在做的是让客户端代码执行他们自己的侦听器/事件对,这需要作为一对在我的库中注册.(嗯,毕竟不是那么久).
进一步编辑:目前客户端代码需要手动注册这对类/接口,这非常有效.我的意图是将其自动化,我认为将两个类与注释联系起来会有所帮助.接下来,我想摆脱需要始终保持注册列表最新的客户端代码.
PS:静态块不会,因为我的接口被捆绑到一个库中,客户端代码将创建更多的接口.因此,抽象类也不会这样做,因为它必须是一个接口.
我一直在尝试在我的应用中使用属性而不是特定的setter和getter.它们似乎更加pythonic,通常使我的代码更具可读性.
除一个问题外更具可读性:错别字.
考虑以下简单示例(注意,我的属性实际上做了一些处理,即使这里的示例只是设置或返回一个简单的变量)
class GotNoClass(object):
def __init__(self):
object.__init__(self)
self.__a = None
def __set_a(self, a):
self.__a = a
def __get_a(self):
return self.__a
paramName = property(__get_a, __set_a)
if __name__ == "__main__":
classy = GotNoClass()
classy.paramName = 100
print classy.paramName
classy.paranName = 200
print classy.paramName
#oops! Typo above! as seen by this line:
print classy.paranName
Run Code Online (Sandbox Code Playgroud)
任何仔细阅读的人都会看到输出结果是:
100
100
200
Run Code Online (Sandbox Code Playgroud)
哎呀.不应该是因为我做了一个错字 - 我写了paranName(两个n)而不是paramName.
在这个简单的例子中,这很容易调试,但在我的大项目中它一直在伤害我.因为当我意外地使用属性时,python愉快地创建了一个新变量,所以我的代码中出现了细微的错误.我发现有时难以追查的错误.更糟糕的是,我曾经两次使用相同的拼写错误(一次是我设置的,后来一次就像我一样)所以我的代码似乎工作但很久以后,当一个不同的代码分支最终试图访问这个属性(正确)我得到了错误的价值 - 但我花了好几天才意识到我的结果有点偏差.
现在我知道这是一个问题,我花了更多的时间仔细阅读我的代码,但理想情况下我会有办法自动捕捉这种情况 - 如果我只想念一个我可以引入一个错误,直到相当一段时间过去了......
所以我想知道,我应该转而选择使用优质的老牌手机和吸气剂吗?还是有一些巧妙的方法来避免这种情况?人们只是依靠自己手动捕获这些错误吗?唉,我不是一个专业的程序员,只是有人试图在工作中完成一些工作,我真的不知道解决这个问题的最佳方法.
谢谢.
PS我明白这也是Python的好处之一,我并不抱怨.只是想知道我是否会更好地使用显式设置器和getter.
#include<iostream>
using namespace std;
class A
{
public:
int i;
A() {cout<<"A()"<<endl;}
~A() {cout<<"~A()"<<endl;}
};
class B:public A
{
public:
int j;
B(): j(10)
{
this->i=20;
this->~A();
}
};
int main()
{
B abc;
cout<<"i="<<abc.i<<" j="<<abc.j<<endl;
}//main
Run Code Online (Sandbox Code Playgroud)
两个问题:
有没有办法在B的构造函数中为A创建一个初始化列表?像这样的东西:
class B:public A
{
B(): j(10), A():i(20) {}
};
Run Code Online (Sandbox Code Playgroud)使用lambdas初始化列表会导致高IL圈复杂度:为什么以及如何消除这种复杂性?例如,下面的代码导致类的静态构造函数(实际上是编译器生成的)非常复杂:1 +列表计数.
static List<Predicate<string>> list = new List<Predicate<string>>()
{
s => s == null,
s=> s.StartsWith(“R”),
... With a lot of predicates like that ….
};
Run Code Online (Sandbox Code Playgroud)
注意:复杂度用计算 NDepend
我有这样的查询:
SELECT * FROM activity
WHERE (((userId = 1 OR userId IN(SELECT userId FROM follower WHERE followerId = 1))
AND activityType IN(1, 2, 3))
OR (targetId = 24 AND aType IN(1, 2, 3, 4, 5)))
ORDER BY id DESC;
Run Code Online (Sandbox Code Playgroud)
我尝试使用model()->findAllBySql($sql)它,它的工作原理.但我想使用它CDbCriteria,如果你有其他解决方案让我知道它:D
java ×4
c# ×2
.net ×1
c++ ×1
classloader ×1
destructor ×1
generics ×1
getter ×1
inheritance ×1
jquery ×1
lambda ×1
ndepend ×1
php ×1
properties ×1
python ×1
queue ×1
select ×1
selection ×1
setter ×1
yii ×1